java.lang.Object
com.google.common.util.concurrent.AbstractService
org.yamcs.tctm.UdpParameterDataLink
- All Implemented Interfaces:
com.google.common.util.concurrent.Service,Runnable,Link,ParameterDataLink
public class UdpParameterDataLink
extends com.google.common.util.concurrent.AbstractService
implements ParameterDataLink, Runnable
Receives PP data via UDP.
The UDP packets are protobuf encoded ParameterData. We don't use any checksum, assume it's done by UDP.
-
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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.yamcs.protobuf.Pvalue.ParameterDatadecodeDatagram(byte[] data, int offset, int length) DecodePvalue.ParameterDatafrom the content of a single received UDP Datagram.voiddisable()Sets the disabled to true such that getNextPacket ignores the received datagramsprotected voiddoStart()protected voiddoStop()voidenable()Sets the disabled to false such that getNextPacket does not ignore the received datagramslonglongReturns statistics with the number of datagrams received and the number of invalid datagramsReturns the current link status.getName()Return the name of the linkorg.yamcs.protobuf.Pvalue.ParameterDataCalled to retrieve the next packet.voidinit(String instance, String name, YConfiguration config) Called at startup to initialize the link.booleanreturn true if the link has been disabled by the user.voidvoidrun()voidsetParameterSink(ParameterSink parameterSink) Methods 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
getParent, getSpec, isEffectivelyDisabled, setParent, setupSystemParameters
-
Constructor Details
-
UdpParameterDataLink
public UdpParameterDataLink()
-
-
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.
-
doStart
protected void doStart()- Specified by:
doStartin classcom.google.common.util.concurrent.AbstractService
-
doStop
protected void doStop()- Specified by:
doStopin classcom.google.common.util.concurrent.AbstractService
-
run
public void run() -
getNextData
public org.yamcs.protobuf.Pvalue.ParameterData getNextData()Called to retrieve the next packet. It blocks in reading on the UDP socket.- Returns:
- anything that looks as a valid packet, just the size is taken into account to decide if it's valid or not
-
decodeDatagram
public org.yamcs.protobuf.Pvalue.ParameterData decodeDatagram(byte[] data, int offset, int length) throws IOException DecodePvalue.ParameterDatafrom the content of a single received UDP Datagram.UdpParameterDataLinkhas configurable support for either Protobuf or JSON-encoded data. Extending links may provide a custom decoder by overriding this method.- Parameters:
data- data buffer. The data received starts fromoffsetand runs forlengthlong.offset- offset of the data receivedlength- length of the data received- Throws:
IOException
-
getLinkStatus
Description copied from interface:LinkReturns the current link status.- Specified by:
getLinkStatusin interfaceLink
-
getDetailedStatus
Returns statistics with the number of datagrams received and the number of invalid datagrams- Specified by:
getDetailedStatusin interfaceLink- Returns:
- more detailed status information
-
disable
public void disable()Sets the disabled to true such that getNextPacket ignores the received datagrams -
enable
public void enable()Sets the disabled to false such that getNextPacket does not ignore the received datagrams -
isDisabled
public boolean isDisabled()Description copied from interface:Linkreturn true if the link has been disabled by the user.See also
Link.isEffectivelyDisabled()- Specified by:
isDisabledin interfaceLink
-
getDataInCount
public long getDataInCount()- Specified by:
getDataInCountin interfaceLink
-
getDataOutCount
public long getDataOutCount()- Specified by:
getDataOutCountin interfaceLink
-
resetCounters
public void resetCounters()- Specified by:
resetCountersin interfaceLink
-
setParameterSink
- Specified by:
setParameterSinkin interfaceParameterDataLink
-
getConfig
-
getName
Description copied from interface:LinkReturn the name of the link
-