public class IMCProtocol extends java.lang.Object implements IMessageBus
IMCProtocol imc = new IMCProtocol(6001); ImcSysState seacon2 = imc.state("lauv-seacon-2"); EstimatedState state = seacon2.pollEstimatedState(30000); if (state != null) state.dump(System.out);
Constructor and Description |
---|
IMCProtocol(int bindPort)
Create a new IMCProtocol instance and bind it to given local port
|
Modifier and Type | Method and Description |
---|---|
void |
addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l)
Add a global message listener that will be call on ALL incoming messages
|
void |
addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l,
java.util.Collection<java.lang.String> typesToListen)
Add a listener to be called whenever messages of certain types are received
|
void |
addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> listener,
java.lang.String... typesToListen)
Add a listener to be called whenever messages of certain types are received
|
void |
addSingleShotListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> listener,
java.lang.String typeToListen)
Add a listener that will be called once and then removed from the list of observers
|
static void |
announce(java.lang.String sysname,
int sysid,
Announce.SYS_TYPE type,
UDPTransport transport) |
long |
announceAgeMillis(java.lang.String name)
Retrieve time elapsed since last announce of given system name
|
java.lang.String |
getLocalName() |
static java.lang.Thread |
heartBeatThread(java.lang.String host,
int port,
UDPTransport transport) |
static void |
main(java.lang.String[] args) |
void |
post(java.lang.Object event) |
void |
register(java.lang.Object subscriber) |
void |
removeMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l)
Remove a previously added message listener
|
boolean |
sendHeartbeat(java.lang.String remoteSystem) |
boolean |
sendMessage(java.lang.String sysName,
IMCMessage msg)
Send message to a remote system
|
void |
startReplay(java.lang.String dirToReplay,
double speed)
Replay an LSF log folder
|
ImcSysState |
state(java.lang.String name)
Retrieve the continuously updated state of the given system
|
void |
stop()
Stop this IMCProtocol instance (closes all sockets)
|
void |
stopReplay()
Stop replaying
|
java.lang.String[] |
systems()
Retrieve a list of known system names (from which an announce has been received)
|
void |
unregister(java.lang.Object subscriber) |
public IMCProtocol(int bindPort)
bindPort
- The port where to bind for listening to incoming messages (also advertised using multicast)public void unregister(java.lang.Object subscriber)
unregister
in interface IMessageBus
public void register(java.lang.Object subscriber)
register
in interface IMessageBus
public void post(java.lang.Object event)
post
in interface IMessageBus
public final java.lang.String getLocalName()
public static void announce(java.lang.String sysname, int sysid, Announce.SYS_TYPE type, UDPTransport transport)
public static java.lang.Thread heartBeatThread(java.lang.String host, int port, UDPTransport transport)
public long announceAgeMillis(java.lang.String name)
name
- The name of the systempublic boolean sendHeartbeat(java.lang.String remoteSystem)
public boolean sendMessage(java.lang.String sysName, IMCMessage msg)
sysName
- The name of the system where to send the messagemsg
- The message to be sent to the systempublic void addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> listener, java.lang.String... typesToListen)
listener
- The listener to be addedtypesToListen
- The list of message abbreviated names to be observed by this listenerpublic void addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l, java.util.Collection<java.lang.String> typesToListen)
l
- The listener to be addedtypesToListen
- Collection of abbreviated names to be observed by this listenerpublic void removeMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l)
l
- The listener to be removed from the observerspublic void addMessageListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> l)
l
- The global listener to be added to the list of observerspublic void addSingleShotListener(pt.lsts.neptus.messages.listener.MessageListener<pt.lsts.neptus.messages.listener.MessageInfo,IMCMessage> listener, java.lang.String typeToListen)
listener
- The listener to be added as a single-shot listenertypeToListen
- The type of message to be listen topublic java.lang.String[] systems()
public ImcSysState state(java.lang.String name)
name
- The system for which to retrieve the statepublic void startReplay(java.lang.String dirToReplay, double speed) throws java.lang.Exception
dirToReplay
- The folder where the files Data.lsf and IMC.xml can be foundspeed
- The time multiplier (1.0 = real time)java.lang.Exception
- In the case the folder cannot be read or any other IO errorspublic void stopReplay()
public void stop()
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception