public interface BusMessagingLayer extends Closeable
| Modifier and Type | Field and Description |
|---|---|
static String |
ANONYMOUS_AGENT |
| Modifier and Type | Method and Description |
|---|---|
void |
addMessageListener(String agentName,
BusMessageForwarder forwarder,
Bus... buses)
Sets up callback configuration for a topic and subsystem.
|
void |
close()
Close the Transport Layer.
|
void |
closeFor(String agentName,
Bus... buses)
close entry points for a bus for an agent.
|
List<String> |
getConnectedNames(Bus bus)
Tries to return the name of a list of agents connected to a bus.
|
void |
register(String agentName,
Bus... buses)
Creates low level communication entry points for a subsystem.
|
void |
removeMessageListener(String agentName,
BusMessageForwarder forwarder,
Bus... buses)
Removes a message listener from the forwarder list.
|
<T extends BusPayload> |
sendMessage(String senderAgent,
Bus<T> bus,
T message,
String... destinations)
sends a message on a bus: note that BusMessage should have sender and
destination information but it is not the role of the communication layer
to parse destination information such as "subsystem1, subsystem2" or
"subsystem3/module"a.
|
void |
setMembershipListener(BusMembershipListener listener,
Bus... buses)
optional operation.
|
static final String ANONYMOUS_AGENT
void register(String agentName, Bus... buses) throws IOException
agentName - name of the sending/receiving point as will be known by transport
null or empty string means that the local agent will receive all messages
(whatever the destination of the message is : "anonymous agent")
if an agent with same name is already locally registered for these buses nothing happens (the call is
idempotent), but if another agent has the same name on the network a DuplicateBusNameException
may be fired (this is an optional behaviour) but this exception is reported only to the corresponding
BusMembershipListenerbuses - list of buses we want to connect to, if empty connects to all busesIOException - if connection impossible,void closeFor(String agentName, Bus... buses)
agentName - (if empty voids the "anonymous" agent capabilitiesbuses - if empty all registered buses for the agent will be closedIllegalArgumentException - if you do not "own" the agent corresponding to the name.void close()
throws IOException
close in interface AutoCloseableclose in interface CloseableIOException<T extends BusPayload> void sendMessage(String senderAgent, Bus<T> bus, T message, String... destinations) throws IOException
The message will be sent to all destinations plus to all the "anonymous" agents
senderAgent - which agent is supposed to be the initiator of the message
(anonymous agents are not supposed to send message: that may fire an exception)bus - message - destinations - could be empty (means broadcast) of a single "" or a single"*" (again means broadcast)
or a list of destinations (DO NOT use things such as "*", "dest1", "dest2" : this will not work!)IOException - this could have a list of causes if some destinations fail.
as much as possible implementers will ensure that all correct destinationa are adressed:
if some fail it is not mandatory to report with a special subclass of IOexception that lists all destination
that failed.DestinationsExceptionvoid addMessageListener(String agentName, BusMessageForwarder forwarder, Bus... buses)
agentName - if empty adds a forwarder to "anonymous" agent that receives all messagesforwarder - code that handles the incoming messagesbuses - if empty the forwarder listens to all buses.IllegalArgumentException - if the subsystem is not registered to one of the buses
or if forwarder is nullvoid removeMessageListener(String agentName, BusMessageForwarder forwarder, Bus... buses)
agentName - forwarder - buses - if empty forwarder is removed from all busesIllegalArgumentException - if forwarder is null
(but no exception if the subsystem is not registered, or forwarder not present)void setMembershipListener(BusMembershipListener listener, Bus... buses)
buses - if empty register to all buseslistener - can be null if we want to deregister a previous listenerUnsupportedOperationException - if not supportedCopyright © 2014 LSST. All rights reserved.