Class UdpParameterDataLink

java.lang.Object
com.google.common.util.concurrent.AbstractService
All Implemented Interfaces:
com.google.common.util.concurrent.Service, Runnable, SystemParametersProducer, Link, LinkActionProvider, ParameterDataLink

public class UdpParameterDataLink extends AbstractParameterDataLink implements 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

    • getSpec

      public Spec getSpec()
      Description copied from interface: Link
      Returns the valid configuration of the input args of this link.
      Specified by:
      getSpec in interface Link
      Returns:
      the argument specification, or null if the args should not be validated.
    • 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
      Overrides:
      init in class AbstractLink
      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 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 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
    • connectionStatus

      public Link.Status connectionStatus()
      Description copied from class: AbstractLink
      In case the link should be connected (i.e. is running and enabled) this method is called to return the actual connection status
      Specified by:
      connectionStatus in class AbstractLink
    • getDetailedStatus

      public String getDetailedStatus()
      Description copied from interface: Link
      Returns a short detail status (one-line)
      Specified by:
      getDetailedStatus in interface Link
      Overrides:
      getDetailedStatus in class AbstractLink
    • getExtraInfo

      public Map<String,Object> getExtraInfo()
      Description copied from interface: Link
      Returns structured information, specific to the link.
      Specified by:
      getExtraInfo in interface Link
    • doEnable

      protected void doEnable() throws Exception
      Overrides:
      doEnable in class AbstractLink
      Throws:
      Exception
    • doDisable

      protected void doDisable() throws Exception
      Overrides:
      doDisable in class AbstractLink
      Throws:
      Exception
    • resetCounters

      public void resetCounters()
      Specified by:
      resetCounters in interface Link
      Overrides:
      resetCounters in class AbstractParameterDataLink