Component Requirements#
Coverage: 100.0% (33 of 33 items OK)
[OK] TRLC Compreq MessagePassing.SafetyCertifiedTransportMechanismUnderQNX
On the QNX operating system, the message passing component shall use the QNX-message-passing as the underlying IPC mechanism.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:24:18
[OK] TRLC Compreq MessagePassing.TransportMechanismOnLinux
On the Linux operating system, the message passing component shall use unix domain-sockets as the underlying IPC mechanism.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:31:18
[OK] TRLC Compreq MessagePassing.OSProvidedSenderIdentity
The message passing server shall be able to identify the sender of each received message by the sender’s OS-provided user ID (UID).
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:39:18
[OK] TRLC Compreq MessagePassing.UnforgableSenderIdentity
The transport mechanism shall ensure that the UID used to identify a message, cannot be forged by the client.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:46:18
[OK] TRLC Compreq MessagePassing.ServerCallbacksAreSequential
The server shall serialize all callbacks belonging to the same server instance, such that no two such callbacks execute concurrently.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:57:18
[OK] TRLC Compreq MessagePassing.ServerProcessesSinglePendingRequest
The server shall not dispatch a new sent-with-reply message callback on a given `ServerConnection` until the preceding request has been replied to.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:64:18
[OK] TRLC Compreq MessagePassing.ClientConnectionMaintainsStateMachine
The `ClientConnection` shall maintain a state machine with the states `Starting`, `Ready`, `Stopping`, and `Stopped`.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:71:18
[OK] TRLC Compreq MessagePassing.SynchronousSendBlocksUntilServerReceives
The `ClientConnection` shall block the calling thread during a `Send` call until the message has been and accepted by the server’s receive buffer, when no client-side send queue is configured.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:78:18
[OK] TRLC Compreq MessagePassing.AsynchronousSendReturnsAfterLocalAcceptance
The `ClientConnection` shall return from a Send call after the message has been accepted by the local message passing layer, when a client-side send queue is configured.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:85:18
[OK] TRLC Compreq MessagePassing.SendWaitReplyBlocksUntilServerReply
The ClientConnection shall block the calling thread during a SendWaitReply call until a reply from the server is received or an error is detected.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:92:18
[OK] TRLC Compreq MessagePassing.MessageOrderPreservationPerConnection
The message passing component shall deliver messages of the same delivery type from the same `IClientConnection` instance to the server in the order they were sent.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:99:18
[OK] TRLC Compreq MessagePassing.SingleServerInstancePerServiceIdentifier
The message passing component shall prevent more than one active `IServer` instance serves a any given service identifier at any point in time.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:106:18
[OK] TRLC Compreq MessagePassing.IServerStartListeningAPI
`IServer` shall provide a `StartListening` method that registers connection, disconnection, fire-and-forget message, and sent-with-reply message callbacks.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:117:18
[OK] TRLC Compreq MessagePassing.IServerStopListeningAPI
`IServer` shall provide a `StopListening` method that releases all registered callbacks and closes all active server connections.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:124:18
[OK] TRLC Compreq MessagePassing.IClientConnectionSendAPI
`IClientConnection` shall provide a Send method that accepts a byte-span message and transmits it to the server.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:131:18
[OK] TRLC Compreq MessagePassing.IClientConnectionSendWaitReplyAPI
`IClientConnection` shall provide a `SendWaitReply` method that accepts a message byte span and a reply buffer span and returns the received reply payload trimmed to its actual size.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:138:18
[OK] TRLC Compreq MessagePassing.IClientConnectionSendWithCallbackAPI
`IClientConnection` shall provide a `SendWithCallback` method that accepts a message byte span and a reply callback and returns after the message has been accepted by the local message passing layer.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:145:18
[OK] TRLC Compreq MessagePassing.IServerConnectionReplyAPI
`IServerConnection` shall provide a Reply method that accepts a byte-span message and delivers it as the reply to the pending REQUEST from the client.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:152:18
[OK] TRLC Compreq MessagePassing.IServerConnectionNotifyAPI
`IServerConnection` shall provide a `Notify` method that accepts a byte-span message and sends it as an asynchronous notification to the client.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:159:18
[OK] TRLC Compreq MessagePassing.ClientFactoryCreateAPI
`IClientFactory` shall provide a `Create` method that accepts a `ServiceProtocolConfig` and a `ClientConfig` and returns a new `IClientConnection` instance configured for the service specified by the `ServiceProtocolConfig`.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:166:18
[OK] TRLC Compreq MessagePassing.ServerFactoryCreateAPI
`IServerFactory` shall provide a `Create` method that accepts a `ServiceProtocolConfig` and a `ServerConfig` and returns a new `IServer` instance configured for the service specified by the `ServiceProtocolConfig`.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:173:18
[OK] TRLC Compreq MessagePassing.IClientConnectionGetStateAPI
`IClientConnection` shall provide a `GetState` method that returns the current connection state.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:180:18
[OK] TRLC Compreq MessagePassing.ServerPreallocatesConnectionObjects
The server shall preallocate memory for the number of `IServerConnection` objects specified by `ServerConfig::pre_alloc_connections` at construction time, without allocating additional memory for each incoming client connection.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:191:18
[OK] TRLC Compreq MessagePassing.ServerRingBufferQueueSizeConfigurable
The server shall implement the shared incoming message queue as a ring buffer with the number of slots equal to `ServerConfig::max_queued_sends`, configured at construction time.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:198:18
[OK] TRLC Compreq MessagePassing.ServerConnectionRefusal
The server shall enable the connection callback to reject an incoming client connection by returning an error, without establishing a server connection for the rejected client.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:205:18
[OK] TRLC Compreq MessagePassing.ServerIConnectionHandlerDispatch
The server shall invoke the `IConnectionHandler` virtual methods of the `UserData` object for a given `IServerConnection` in place of the server-wide callbacks, when the UserData holds an `IConnectionHandler` instance.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:212:18
[OK] TRLC Compreq MessagePassing.ClientConnectionSendQueuePreallocation
The `ClientConnection` shall preallocate send queue storage for the number of asynchronous messages specified by `ClientConfig::max_queued_sends` at construction time.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:223:18
[OK] TRLC Compreq MessagePassing.ClientConnectionSharedResourceEngineInjection
The `ClientConnection` shall accept an `ISharedResourceEngine` instance as a constructor parameter, which shouldbe the exclusive provider forall shared resources.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:231:18
[OK] TRLC Compreq MessagePassing.ClientConnectionMockInjectionForTesting
The `ClientConnection` shall use the `ISharedResourceEngine` interface for all OS interactions.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:238:18
[OK] TRLC Compreq MessagePassing.ClientConnectionSendFailsWhenStopped
The `ClientConnection` shall return an error for a Send call when the connection is in the `Stopped` state.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:246:18
[OK] TRLC Compreq MessagePassing.ClientConnectionSendWaitReplyFailsWhenStopped
The `ClientConnection` shall return an error for a `SendWaitReply` call when the connection is in the `Stopped` state.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:253:18
[OK] TRLC Compreq MessagePassing.ClientConnectionSendWithCallbackFailsWhenStopped
The `ClientConnection` shall return an error for a `SendWithCallback` call when the connection is in the `Stopped` state.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:260:18
[OK] TRLC Compreq MessagePassing.ClientConnectionStateCallbackInvocation
The `ClientConnection` shall invoke the registered `StateCallback` each time the connection state changes, passing the new state as the argument.
Traces to:
Derived from:
Source: score/message_passing/dependability/requirements/component_requirements.trlc:267:18