Skip to end of metadata
Go to start of metadata
This page describes the standard protocol implemented in the ION capability container to make a service request from a capability container process. In most cases, this request is blocking until the result or a failure response arrives, or until a timeout occurs
Protocol Request
Description Standard protocol to make a request to a service and wait for the response, failure or timeout. Two variants: Simple RPC and Service Request
Conversation Roles Requester, Provider


  • The service interface is described in a service definition YML (see CIAD COI SV Service Interfaces)
  • The service is active in the system, i.e. has an instance in the system with at least one service worker process waiting for request messages
  • The process uses a service client that was generated from the service definition YML.

Service Request Protocol

The figure below shows a service request against elapsed system time.

Figure 1. Service request protocol (OV-6)

Open Issues and Design TBDs:

  • How to check that the provider exists before sending a request? (do we need this?)
  • What happens when either side times out?
  • What happens when one side fails?
  • How to make a non-blocking request on the requester side?
  • Do we need ACKs in here?
  • What happens if cancel arrives after result was sent?
  • What happens if timeout occurs before result is delivered (but was sent in time)?
  • What about request side effects in case of timeout
  • What happens when the requester fails during wait for the response?
  • What happens to messages sent to the requester after it timed out or failed (e.g. the queue etc).

Variant: Simple RPC Protocol

The figure below specifies the protocol implemented for Release 2. A simple RPC with timeout.

Figure 2. Simple RPC protocol (OV-6)


interaction-protocol interaction-protocol Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.