|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface BusMessagingLayer
Interface defining the access to the Transport Layer of Buses
| Field Summary | |
|---|---|
static String |
ANONYMOUS_AGENT
|
| Method Summary | ||
|---|---|---|
void |
addMessageListener(String agentName,
BusMessageForwarder forwarder,
org.lsst.ccs.bus.Bus... buses)
Sets up callback configuration for a topic and subsystem. |
|
void |
close()
Close the Transport Layer. |
|
void |
closeFor(String agentName,
org.lsst.ccs.bus.Bus... buses)
close entry points for a bus for an agent. |
|
void |
register(String agentName,
org.lsst.ccs.bus.Bus... buses)
Creates low level communication entry points for a subsystem. |
|
void |
removeMessageListener(String agentName,
BusMessageForwarder forwarder,
org.lsst.ccs.bus.Bus... buses)
Removes a message listener from the forwarder list. |
|
|
sendMessage(String senderAgent,
org.lsst.ccs.bus.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,
org.lsst.ccs.bus.Bus... buses)
optional operation. |
|
| Field Detail |
|---|
static final String ANONYMOUS_AGENT
| Method Detail |
|---|
void register(String agentName,
org.lsst.ccs.bus.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 buses
IOException - if connection impossible,
void closeFor(String agentName,
org.lsst.ccs.bus.Bus... buses)
agentName - (if empty voids the "anonymous" agent capabilitiesbuses - if empty all registered buses for the agent will be closed
IllegalArgumentException - if you do not "own" the agent corresponding to the name.
void close()
throws IOException
close in interface CloseableIOException
<T extends org.lsst.ccs.bus.BusPayload> void sendMessage(String senderAgent,
org.lsst.ccs.bus.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.DestinationsException
void addMessageListener(String agentName,
BusMessageForwarder forwarder,
org.lsst.ccs.bus.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 null
void removeMessageListener(String agentName,
BusMessageForwarder forwarder,
org.lsst.ccs.bus.Bus... buses)
agentName - forwarder - buses - if empty forwarder is removed from all buses
IllegalArgumentException - if forwarder is null
(but no exception if the subsystem is not registered, or forwarder not present)
void setMembershipListener(BusMembershipListener listener,
org.lsst.ccs.bus.Bus... buses)
buses - if empty register to all buseslistener - can be null if we want to deregister a previous listener
UnsupportedOperationException - if not supported
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||