@ThreadSafe class InMemoryMessagingNetwork : SingletonSerializeAsToken
An in-memory network allows you to manufacture MockNodeMessagingServices for a set of participants. Each MockNodeMessagingService maintains a queue of messages it has received, and a background thread that dispatches messages one by one to registered handlers. Alternatively, a messaging system may be manually pumped, in which case no thread is created and a caller is expected to force delivery one at a time (this is useful for unit testing).
servicePeerAllocationStrategy
- defines the strategy to be used when determining which peer to send to in case
a service is addressed.
DistributedServiceHandle |
A class which represents information about nodes offering the same distributed service on the InMemoryMessagingNetwork. data class DistributedServiceHandle : MessageRecipientGroup |
LatencyCalculator |
Implement this interface in order to inject artificial latency between sender/recipient pairs. interface LatencyCalculator |
MessageTransfer |
A class which represents a message being transferred from sender to recipients, within the InMemoryMessageNetwork. class MessageTransfer |
MockMessagingService |
A class that provides an abstraction over the nodes' messaging service that also contains the ability to receive messages from the queue for testing purposes. class MockMessagingService |
PeerHandle |
A class which represents information about an entity on the InMemoryMessagingNetwork. data class PeerHandle : SingleMessageRecipient |
ServicePeerAllocationStrategy |
How traffic is allocated in the case where multiple nodes share a single identity, which happens for notaries in a cluster. You don't normally ever need to change this: it is mostly useful for testing notary implementations. sealed class ServicePeerAllocationStrategy |
endpointsExternal |
Get a List of all the MockMessagingService endpoints val endpointsExternal: List<MockMessagingService> |
receivedMessages |
A stream of (sender, message, recipients) triples containing messages once they have been received. val receivedMessages: Observable<MessageTransfer> |
sentMessages |
A stream of (sender, message, recipients) triples containing messages once they have been sent by pumpSend. val sentMessages: Observable<MessageTransfer> |
pumpSend |
Send the next queued message to the requested recipient(s) within the network fun pumpSend(block: Boolean): MessageTransfer? |
stop |
Stop all nodes within the network and clear any buffered messages fun stop(): Unit |