Class UdpParameterDataLink

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.
  • Constructor Details

    • UdpParameterDataLink

      public UdpParameterDataLink()
  • Method Details

    • init

      public void init(String instance, String name, YConfiguration config)
      Description copied from interface: Link
      Called at startup to initialize the link.

      The config corresponds to the map that is under the link definition in yamcs.instance.yaml.

      Specified by:
      init in interface Link
      config - - the configuration - cannot be null (but can be empty)
    • doStart

      protected void doStart()
      Specified by:
      doStart in class com.google.common.util.concurrent.AbstractService
    • doStop

      protected void doStop()
      Specified by:
      doStop in class com.google.common.util.concurrent.AbstractService
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • 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
      Decode Pvalue.ParameterData from the content of a single received UDP Datagram.

      UdpParameterDataLink has 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 from offset and runs for length long.
      offset - offset of the data received
      length - length of the data received
      Throws:
      IOException
    • getLinkStatus

      public Link.Status getLinkStatus()
      Description copied from interface: Link
      Returns the current link status.
      Specified by:
      getLinkStatus in interface Link
    • getDetailedStatus

      public String getDetailedStatus()
      Returns statistics with the number of datagrams received and the number of invalid datagrams
      Specified by:
      getDetailedStatus in interface Link
    • disable

      public void disable()
      Sets the disabled to true such that getNextPacket ignores the received datagrams
      Specified by:
      disable in interface Link
    • enable

      public void enable()
      Sets the disabled to false such that getNextPacket does not ignore the received datagrams
      Specified by:
      enable in interface Link
    • isDisabled

      public boolean isDisabled()
      Description copied from interface: Link
      return true if the link has been disabled by the user.

      See also Link.isEffectivelyDisabled()

      Specified by:
      isDisabled in interface Link
    • getDataInCount

      public long getDataInCount()
      Specified by:
      getDataInCount in interface Link
    • getDataOutCount

      public long getDataOutCount()
      Specified by:
      getDataOutCount in interface Link
    • resetCounters

      public void resetCounters()
      Specified by:
      resetCounters in interface Link
    • setParameterSink

      public void setParameterSink(ParameterSink parameterSink)
      Specified by:
      setParameterSink in interface ParameterDataLink
    • getConfig

      public YConfiguration getConfig()
      Specified by:
      getConfig in interface Link
      Returns:
      the config (args) used when creating the link
    • getName

      public String getName()
      Description copied from interface: Link
      Return the name of the link
      Specified by:
      getName in interface Link