- All Implemented Interfaces:
com.google.common.util.concurrent.Service,Runnable,SystemParametersProducer,Link,TcDataLink,TmPacketDataLink
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.yamcs.tctm.Link
Link.StatusNested classes/interfaces inherited from interface com.google.common.util.concurrent.Service
com.google.common.util.concurrent.Service.Listener, com.google.common.util.concurrent.Service.State -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CommandPostprocessorprotected CommandHistoryPublisherprotected AtomicLongprotected Stringprotected longprotected intprotected SocketFields inherited from class org.yamcs.tctm.AbstractTmDataLink
packetCount, packetPreprocessor, updateSimulationTimeFields inherited from class org.yamcs.tctm.AbstractLink
config, disabled, eventProducer, linkName, log, timeService, yamcsInstance -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidackCommand(org.yamcs.protobuf.Commanding.CommandId commandId) send an ack in the command history that the command has been sent out of the linkprotected voidprotected voidprotected Link.StatusIn case the link should be connected (i.e. is running and enabled) this method is called to return the actual connection statusvoidvoiddoEnable()voiddoStart()voiddoStop()protected voidfailedCommand(org.yamcs.protobuf.Commanding.CommandId commandId, String reason) Send to command history the failed commandprotected longlongIf this link is a sublink of an aggregated link, get the parent link.voidinit(String instance, String name, YConfiguration config) Called at startup to initialize the link.protected voidinitPostprocessor(String instance, YConfiguration config) protected booleanvoidvoidrun()protected voidsendBuffer(byte[] data) booleanAttempt to send the command and return true if the command has been sent or its processing has finished.voidsetCommandHistoryPublisher(CommandHistoryPublisher commandHistoryListener) voidsetParent(AggregatedDataLink parent) Set the parent link if this is a sublink of an aggregated link.Methods inherited from class org.yamcs.tctm.AbstractTmDataLink
collectSystemParameters, getDataInCount, processPacket, setTmSink, setupSystemParameters, updateStatsMethods inherited from class org.yamcs.tctm.AbstractLink
disable, enable, getConfig, getEventLoop, getLinkStatus, getName, getSystemParameters, isDisabled, isRunningAndEnabledMethods inherited from class com.google.common.util.concurrent.AbstractService
addListener, awaitRunning, awaitRunning, awaitRunning, awaitTerminated, awaitTerminated, awaitTerminated, doCancelStart, failureCause, isRunning, notifyFailed, notifyStarted, notifyStopped, startAsync, state, stopAsync, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.yamcs.tctm.Link
disable, enable, getConfig, getDataInCount, getLinkStatus, getName, getSpec, isDisabled, isEffectivelyDisabled, setupSystemParametersMethods inherited from interface org.yamcs.parameter.SystemParametersProducer
getFrequency, getSystemParameters, getSystemParametersMethods inherited from interface org.yamcs.tctm.TcDataLink
sendTc
-
Field Details
-
commandHistoryPublisher
-
dataOutCount
-
cmdPostProcessor
-
tmSocket
-
host
-
port
protected int port -
initialDelay
protected long initialDelay
-
-
Constructor Details
-
TcpTcTmDataLink
public TcpTcTmDataLink()
-
-
Method Details
-
init
Description copied from interface:LinkCalled at startup to initialize the link.The config corresponds to the map that is under the link definition in yamcs.instance.yaml.
- Specified by:
initin interfaceLink- Overrides:
initin classAbstractTmDataLinkconfig- - the configuration - cannot be null (but can be empty)- Throws:
ConfigurationException
-
checkAndOpenSocket
- Throws:
IOException
-
isSocketOpen
protected boolean isSocketOpen() -
sendBuffer
- Throws:
IOException
-
closeSocket
protected void closeSocket() -
run
public void run() -
getNextPacket
-
initPostprocessor
protected void initPostprocessor(String instance, YConfiguration config) throws ConfigurationException - Throws:
ConfigurationException
-
sendCommand
Description copied from interface:TcDataLinkAttempt to send the command and return true if the command has been sent or its processing has finished.If false is returned, the
LinkManagerwill attempt to send the command via the next TC link (if any).The link is expected to update the
CommandHistoryPublisher.AcknowledgeSentack in the command history if the method returned true. If it returned false, the ack should not be updated (it will be updated by the next link or by the Link Manager if there is other no link).The link can update the
CommandHistoryPublisher.AcknowledgeSentack with a negative ack and return true (i.e. the command has not been really sent but it has finished processing).The return true/false has been introduced in Yamcs 5.6.0. Before that version, the old method sendTc was implicitly returning true. As of Yamcs 5.6.0 most links return true even when they cannot send the command (setting the negative Sent ack).
Throwing an exception is equivalent with returning false, except a error log will be printed (this is considered a bug)
- Specified by:
sendCommandin interfaceTcDataLink- Returns:
-
setCommandHistoryPublisher
- Specified by:
setCommandHistoryPublisherin interfaceTcDataLink
-
failedCommand
Send to command history the failed command -
ackCommand
protected void ackCommand(org.yamcs.protobuf.Commanding.CommandId commandId) send an ack in the command history that the command has been sent out of the link- Parameters:
commandId-
-
doStart
public void doStart()- Specified by:
doStartin classcom.google.common.util.concurrent.AbstractService
-
doStop
public void doStop()- Specified by:
doStopin classcom.google.common.util.concurrent.AbstractService
-
getCurrentTime
protected long getCurrentTime()- Overrides:
getCurrentTimein classAbstractLink
-
getDataOutCount
public long getDataOutCount()- Specified by:
getDataOutCountin interfaceLink- Overrides:
getDataOutCountin classAbstractTmDataLink
-
resetCounters
public void resetCounters()- Specified by:
resetCountersin interfaceLink- Overrides:
resetCountersin classAbstractTmDataLink
-
getParent
Description copied from interface:LinkIf this link is a sublink of an aggregated link, get the parent link. -
setParent
Description copied from interface:LinkSet the parent link if this is a sublink of an aggregated link. -
doDisable
public void doDisable()- Overrides:
doDisablein classAbstractLink
-
doEnable
public void doEnable()- Overrides:
doEnablein classAbstractLink
-
getDetailedStatus
- Specified by:
getDetailedStatusin interfaceLink- Overrides:
getDetailedStatusin classAbstractLink- Returns:
- more detailed status information
-
connectionStatus
Description copied from class:AbstractLinkIn case the link should be connected (i.e. is running and enabled) this method is called to return the actual connection status- Specified by:
connectionStatusin classAbstractLink
-