M
- extends IMessageMi
- extends MessageInfoC
- extends VehicleCommInfoI
- its the identifierL
- extends CommManagerStatusChangeListenerpublic abstract class CommBaseManager<M extends IMessage,Mi extends pt.lsts.neptus.messages.listener.MessageInfo,C extends SystemCommBaseInfo<M,Mi,I>,I,L extends CommManagerStatusChangeListener>
extends java.lang.Object
implements pt.lsts.neptus.messages.listener.MessageListener<Mi,M>
Modifier and Type | Field and Description |
---|---|
protected double |
arrivalDeltaTxRxTimeNanosLastMsg |
protected double |
arrivalLastSecondMsgTime |
protected double |
arrivalMessageFreq |
protected long |
arrivalMsgsInLastSec |
protected double |
arrivalTimeMillisLastMsg |
protected java.util.LinkedHashMap<I,C> |
commInfo |
protected long |
counter |
protected java.util.LinkedList<Mi> |
infoQueue |
protected boolean |
isActive |
protected pt.lsts.neptus.messages.listener.MessageListener<Mi,M> |
lastListener |
protected java.util.LinkedHashMap<java.lang.String,java.lang.Long> |
lastReceivedTime |
protected java.util.LinkedHashSet<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>> |
listeners |
protected java.util.LinkedHashMap<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>,MessageListenerQueueProvider<Mi,M>> |
listenersQueueProvider |
static int |
MANAGER_ERROR |
static int |
MANAGER_START |
static int |
MANAGER_STOP |
protected pt.lsts.neptus.comm.manager.CommonCommBaseImplementation.MessageProcessor |
messageProcessor |
protected long |
minDelay
Is the separation time of each message type that is warn to the listeners.
|
protected java.util.LinkedList<M> |
msgQueue |
protected PreferencesListener |
preferencesListener |
protected double |
processDeltaTxRxTimeNanosLastMsg |
protected double |
processLastSecondMsgTime |
protected double |
processMessageFreq |
protected long |
processMsgsInLastSec |
protected double |
processTimeMillisLastMsg |
protected int |
queueMaxSize |
protected long |
seqInstanceNr |
protected boolean |
started |
protected java.util.LinkedHashSet<L> |
statusListeners |
static int |
SYS_COMM_OFF |
static int |
SYS_COMM_ON |
static int |
SYS_CTRL_CHANGED |
static int |
SYS_NEW |
protected java.lang.Thread |
timerThread |
protected static boolean |
useListenersQueues |
Modifier | Constructor and Description |
---|---|
protected |
CommBaseManager() |
Modifier and Type | Method and Description |
---|---|
boolean |
addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
For public channel
Don't need to override this method. |
boolean |
addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener,
I vehicleCommId)
Don't need to override this method. |
boolean |
addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener,
I vehicleCommId,
MessageFilter<Mi,M> filter)
Don't need to override this method. |
boolean |
addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener,
MessageFilter<Mi,M> filter)
Same as
addListener(MessageListener) but with a filter. |
boolean |
addStatusListener(L listener)
This is related to the status change listeners (
statusListeners ). |
void |
clearMsgQueue()
To force the clear of the messages queue.
|
double |
getArrivalDeltaTxRxTimeNanosLastMsg() |
double |
getArrivalMessageFreq()
Don't need to override this method. |
double |
getArrivalTimeMillisLastMsg()
Don't need to override this method. |
java.util.LinkedHashMap<I,C> |
getCommInfo()
Don't need to override this method. |
C |
getCommInfoById(I id)
Don't need to override this method. |
pt.lsts.neptus.messages.listener.MessageListener<Mi,M> |
getLastListener()
Don't need to override this method. |
protected java.util.LinkedHashSet<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>> |
getListeners()
Don't need to override this method. |
java.lang.String |
getListenersAsHtmlFragment() |
java.lang.String |
getListenersAsHtmlFragment(I id) |
protected java.util.LinkedHashMap<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>,MessageListenerQueueProvider<Mi,M>> |
getListenersQueueProvider() |
int |
getListenersSize()
Don't need to override this method. |
protected long |
getMinDelay()
Don't need to override this method. |
int |
getMsgQueueLength()
Don't need to override this method. |
long |
getNextSeqInstanceNr()
Don't need to override this method. |
int |
getNumberOfSystems()
Don't need to override this method. |
double |
getProcessDeltaTxRxTimeNanosLastMsg() |
double |
getProcessMessageFreq()
Don't need to override this method. |
double |
getProcessTimeMillisLastMsg()
Don't need to override this method. |
long |
getSeqInstanceNr()
Don't need to override this method. |
protected java.util.LinkedHashSet<L> |
getStatusListeners()
This is related to the status change listeners (
statusListeners ). |
java.lang.String |
getStatusListenersAsHtmlFragment() |
int |
getStatusListenersSize()
This is related to the status change listeners (
statusListeners ). |
java.lang.Thread |
getTimerThread() |
protected abstract boolean |
initManagerComms()
Initialize the comms. but don't start.
|
C |
initSystemCommInfo(I vIdS,
java.lang.String inetAddress)
Initialize a vehicle comms (as in
SystemCommBaseInfo ). |
boolean |
isActive() |
boolean |
isRunning()
Don't need to override this method. |
void |
onMessage(Mi info,
M msg)
This is from
#openNode . |
protected void |
processMessage(Mi info,
M msg)
This calls:
if (processMsgLocally(info, msg))
warnListeners(info, msg);
Normally this method is NOT needed to be overwritten. |
protected abstract boolean |
processMsgLocally(Mi info,
M msg)
To be used to process the message locally.
|
boolean |
removeListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
For public channel
Don't need to override this method. |
boolean |
removeListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener,
I vehicleCommId)
Don't need to override this method. |
boolean |
removeListenerFromAllSystems(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
Removes this listener from all systems excluding the common.
|
boolean |
removeStatusListener(L listener)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerStatusChanged(int status,
java.lang.String msg)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerSystemAdded(I commId)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerSystemRemoved(I commId)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerSystemStatusChanged(I commId,
int status)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerVehicleAdded(VehicleType vehicle)
This is related to the status change listeners (
statusListeners ). |
protected void |
sendManagerVehicleRemoved(VehicleType vehicle)
This is related to the status change listeners (
statusListeners ). |
void |
sendManagerVehicleStatusChanged(VehicleType vehicle,
int status)
This is related to the status change listeners (
statusListeners ). |
abstract boolean |
sendMessage(M message,
I vehicleCommId,
java.lang.String sendProperties) |
abstract boolean |
sendMessageToVehicle(M message,
java.lang.String vehicleID,
java.lang.String sendProperties)
Should call
#sendMessage(MiddlewareMessage, Object) . |
abstract boolean |
sendMessageToVehicle(M message,
VehicleType vehicle,
java.lang.String sendProperties)
Should call
#sendMessage(MiddlewareMessage, Object) . |
protected void |
setActive(boolean isActive,
Mi info,
M message)
This will set activity flag and call
triggerExtraActionOnSetActive(boolean, MessageInfo, IMessage) to
trigger some extra action (by default the triggerExtraActionOnSetActive(boolean, MessageInfo, IMessage)
does nothing). |
void |
setArrivalDeltaTxRxTimeNanosLastMsg(double arrivalDeltaTxRxTimeNanosLastMsg) |
protected void |
setArrivalMessageFreq(double arrivalMessageFreq)
Don't need to override this method. |
protected void |
setArrivalTimeMillisLastMsg(double arrivalTimeMillisLastMsg)
Don't need to override this method. |
protected void |
setCommInfo(java.util.LinkedHashMap<I,C> commInfo)
Don't need to override this method. |
protected void |
setMinDelay(long minDelay)
Don't need to override this method. |
protected void |
setProcessDeltaTxRxTimeNanosLastMsg(double processDeltaTxRxTimeNanosLastMsg) |
protected void |
setProcessTimeMillisLastMsg(double timeMillisLastMsgReceived)
This function is used to set the last msg time arrival on processor and it will calculate the frequency of
arrival.
|
protected void |
setSeqInstanceNr(long seqInstanceNr)
Don't need to override this method. |
protected void |
setStatusListeners(java.util.LinkedHashSet<L> listeners)
This is related to the status change listeners (
statusListeners ). |
boolean |
start()
Initialize manager.
|
protected abstract boolean |
startManagerComms()
Start the comms.
|
boolean |
stop()
Shutdown.
|
protected abstract boolean |
stopManagerComms()
Stop the comms.
|
protected void |
triggerExtraActionOnSetActive(boolean isActive,
Mi info,
M message)
You need to override this method to implement extra actions when
|
protected void |
warnListeners(Mi info,
M msg)
For public channel
Don't need to override this method. |
protected java.util.LinkedHashSet<L extends CommManagerStatusChangeListener> statusListeners
protected boolean started
public static final int MANAGER_START
public static final int MANAGER_STOP
public static final int MANAGER_ERROR
public static final int SYS_COMM_ON
public static final int SYS_COMM_OFF
public static final int SYS_NEW
public static final int SYS_CTRL_CHANGED
protected java.lang.Thread timerThread
protected static boolean useListenersQueues
protected java.util.LinkedList<M extends IMessage> msgQueue
protected java.util.LinkedList<Mi extends pt.lsts.neptus.messages.listener.MessageInfo> infoQueue
protected pt.lsts.neptus.comm.manager.CommonCommBaseImplementation.MessageProcessor messageProcessor
protected boolean isActive
protected double processTimeMillisLastMsg
protected long processMsgsInLastSec
protected double processMessageFreq
protected double processLastSecondMsgTime
protected double processDeltaTxRxTimeNanosLastMsg
protected double arrivalTimeMillisLastMsg
protected long arrivalMsgsInLastSec
protected double arrivalMessageFreq
protected double arrivalLastSecondMsgTime
protected double arrivalDeltaTxRxTimeNanosLastMsg
protected long counter
protected java.util.LinkedHashSet<pt.lsts.neptus.messages.listener.MessageListener<Mi extends pt.lsts.neptus.messages.listener.MessageInfo,M extends IMessage>> listeners
protected pt.lsts.neptus.messages.listener.MessageListener<Mi extends pt.lsts.neptus.messages.listener.MessageInfo,M extends IMessage> lastListener
protected java.util.LinkedHashMap<pt.lsts.neptus.messages.listener.MessageListener<Mi extends pt.lsts.neptus.messages.listener.MessageInfo,M extends IMessage>,MessageListenerQueueProvider<Mi extends pt.lsts.neptus.messages.listener.MessageInfo,M extends IMessage>> listenersQueueProvider
protected int queueMaxSize
protected long seqInstanceNr
protected long minDelay
protected java.util.LinkedHashMap<java.lang.String,java.lang.Long> lastReceivedTime
protected PreferencesListener preferencesListener
public boolean start()
initManagerComms()
linking the created node to #openNode
and calls
it's start method. Also starts messageProcessor
and starts it. Then sends a MANAGER_START
event. Next calls a resume message processing to each started system comms.
This one needs to be called if you override it.
public java.lang.Thread getTimerThread()
public boolean stop()
#openNode
and messageProcessor
and clears the messages queue. Calls the
stopMsgProcessing on the vehicle comms. Then sends a MANAGER_STOP
event.
This one needs to be called if you override it.
protected void sendManagerStatusChanged(int status, java.lang.String msg)
statusListeners
).
Don't need to override this method.
status
- msg
- public void sendManagerVehicleStatusChanged(VehicleType vehicle, int status)
statusListeners
).
Don't need to override this method.
vehicle
- status
- protected void sendManagerVehicleAdded(VehicleType vehicle)
statusListeners
).
Don't need to override this method.
vehicle
- protected void sendManagerVehicleRemoved(VehicleType vehicle)
statusListeners
).
Don't need to override this method.
vehicle
- protected void sendManagerSystemStatusChanged(I commId, int status)
statusListeners
).
Don't need to override this method.
commId
- status
- protected void sendManagerSystemAdded(I commId)
statusListeners
).
Don't need to override this method.
commId
- protected void sendManagerSystemRemoved(I commId)
statusListeners
).
Don't need to override this method.
commId
- protected java.util.LinkedHashSet<L> getStatusListeners()
statusListeners
).
Don't need to override this method.
protected void setStatusListeners(java.util.LinkedHashSet<L> listeners)
statusListeners
).
Don't need to override this method.
listeners
- The listeners to set.public int getStatusListenersSize()
statusListeners
).
Don't need to override this method.
public boolean addStatusListener(L listener)
statusListeners
).
Don't need to override this method.
listener
- public boolean removeStatusListener(L listener)
statusListeners
).
Don't need to override this method.
listener
- public java.lang.String getStatusListenersAsHtmlFragment()
public java.lang.String getListenersAsHtmlFragment()
public java.lang.String getListenersAsHtmlFragment(I id)
id
- public C getCommInfoById(I id)
Don't need to override this method.
id
- public java.util.LinkedHashMap<I,C> getCommInfo()
Don't need to override this method.
protected void setCommInfo(java.util.LinkedHashMap<I,C> commInfo)
Don't need to override this method.
commInfo
- The commInfo to set.public C initSystemCommInfo(I vIdS, java.lang.String inetAddress)
SystemCommBaseInfo
).
This function HAS TO BE overwritten (return null as the default implementation).
This is not abstract to force "synchronized".vIdS
- inetAddress
- protected abstract boolean initManagerComms()
protected abstract boolean startManagerComms()
protected abstract boolean stopManagerComms()
public abstract boolean sendMessageToVehicle(M message, VehicleType vehicle, java.lang.String sendProperties)
#sendMessage(MiddlewareMessage, Object)
.message
- vehicle
- sendProperties
- Properties to allow decision on how to send the message. Implementation dependent but can
be a list.public abstract boolean sendMessageToVehicle(M message, java.lang.String vehicleID, java.lang.String sendProperties)
#sendMessage(MiddlewareMessage, Object)
.message
- vehicleID
- This id is the vehicle id as defined by VehicleType
.sendProperties
- Properties to allow decision on how to send the message. Implementation dependent but can
be a list.public abstract boolean sendMessage(M message, I vehicleCommId, java.lang.String sendProperties)
message
- vehicleCommId
- sendProperties
- Properties to allow decision on how to send the message. Implementation dependent but can
be a list.public boolean addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener, I vehicleCommId)
Don't need to override this method.
listener
- vehicleCommId
- public boolean addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener, I vehicleCommId, MessageFilter<Mi,M> filter)
Don't need to override this method.
listener
- vehicleCommId
- filter
- public boolean removeListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener, I vehicleCommId)
Don't need to override this method.
listener
- vehicleCommId
- public final boolean removeListenerFromAllSystems(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
listener
- public boolean isRunning()
Don't need to override this method.
public int getNumberOfSystems()
Don't need to override this method.
public final int getMsgQueueLength()
Don't need to override this method.
public final void clearMsgQueue()
Don't need to override this method.
protected final java.util.LinkedHashSet<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>> getListeners()
Don't need to override this method.
public final int getListenersSize()
Don't need to override this method.
public final pt.lsts.neptus.messages.listener.MessageListener<Mi,M> getLastListener()
Don't need to override this method.
protected final java.util.LinkedHashMap<pt.lsts.neptus.messages.listener.MessageListener<Mi,M>,MessageListenerQueueProvider<Mi,M>> getListenersQueueProvider()
public final boolean isActive()
protected final void setActive(boolean isActive, Mi info, M message)
triggerExtraActionOnSetActive(boolean, MessageInfo, IMessage)
to
trigger some extra action (by default the triggerExtraActionOnSetActive(boolean, MessageInfo, IMessage)
does nothing). WARNING info and message can be null.protected void triggerExtraActionOnSetActive(boolean isActive, Mi info, M message)
You need to override this method to implement extra actions when
setActive(boolean, MessageInfo, IMessage)
is called.
isActive
- info
- Can be null.message
- Can be null.public final double getProcessTimeMillisLastMsg()
Don't need to override this method.
protected final void setProcessTimeMillisLastMsg(double timeMillisLastMsgReceived)
Don't need to override this method.
timeMillisLastMsgReceived
- the timeLastMsgReceived to setpublic final double getProcessDeltaTxRxTimeNanosLastMsg()
protected final void setProcessDeltaTxRxTimeNanosLastMsg(double processDeltaTxRxTimeNanosLastMsg)
processDeltaTxRxTimeNanosLastMsg
- the processDeltaTxRxTimeNanosLastMsg to setpublic final double getProcessMessageFreq()
Don't need to override this method.
public final double getArrivalMessageFreq()
Don't need to override this method.
protected final void setArrivalMessageFreq(double arrivalMessageFreq)
Don't need to override this method.
arrivalMessageFreq
- the arrivalMessageFreq to setpublic final double getArrivalTimeMillisLastMsg()
Don't need to override this method.
protected final void setArrivalTimeMillisLastMsg(double arrivalTimeMillisLastMsg)
Don't need to override this method.
arrivalTimeMillisLastMsg
- the arrivalTimeLastMsg to setpublic final double getArrivalDeltaTxRxTimeNanosLastMsg()
public final void setArrivalDeltaTxRxTimeNanosLastMsg(double arrivalDeltaTxRxTimeNanosLastMsg)
arrivalDeltaTxRxTimeNanosLastMsg
- the arrivalDeltaTxRxTimeNanosLastMsg to setprotected long getMinDelay()
Don't need to override this method.
protected void setMinDelay(long minDelay)
Don't need to override this method.
minDelay
- protected void warnListeners(Mi info, M msg)
Don't need to override this method.
info
- msg
- public boolean addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
Don't need to override this method.
listener
- public boolean addListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener, MessageFilter<Mi,M> filter)
addListener(MessageListener)
but with a filter.
Don't need to override this method.
listener
- filter
- If null means no filter.public boolean removeListener(pt.lsts.neptus.messages.listener.MessageListener<Mi,M> listener)
Don't need to override this method.
listener
- public final void onMessage(Mi info, M msg)
#openNode
.
This method is to be called upon message arrival.
onMessage
in interface pt.lsts.neptus.messages.listener.MessageListener<Mi extends pt.lsts.neptus.messages.listener.MessageInfo,M extends IMessage>
MessageListener.onMessage(pt.lsts.neptus.messages.listener.MessageInfo,
pt.lsts.neptus.messages.IMessage)
protected final void processMessage(Mi info, M msg)
if (processMsgLocally(info, msg)) warnListeners(info, msg);
Normally this method is NOT needed to be overwritten.
info
- msg
- protected abstract boolean processMsgLocally(Mi info, M msg)
info
- msg
- public final long getSeqInstanceNr()
Don't need to override this method.
protected final void setSeqInstanceNr(long seqInstanceNr)
Don't need to override this method.
seqInstanceNr
- the seqInstanceNr to setpublic final long getNextSeqInstanceNr()
Don't need to override this method.
Copyright © 2004-2020 FEUP-LSTS and Neptus developers. All Rights Reserved.