Component Requirements#

Coverage: 100.0% (33 of 33 items OK)

[OK] TRLC Compreq MessagePassing.SafetyCertifiedTransportMechanismUnderQNX
[OK] TRLC Compreq MessagePassing.TransportMechanismOnLinux
[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
[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
[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
[OK] TRLC Compreq MessagePassing.ClientConnectionSendFailsWhenStopped
[OK] TRLC Compreq MessagePassing.ClientConnectionSendWaitReplyFailsWhenStopped
[OK] TRLC Compreq MessagePassing.ClientConnectionSendWithCallbackFailsWhenStopped
[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