Class TcpTcTmDataLink

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

public class TcpTcTmDataLink extends AbstractTcTmParamLink implements Runnable
  • Field Details

    • tmSocket

      protected Socket tmSocket
    • host

      protected String host
    • port

      protected int port
    • initialDelay

      protected long initialDelay
  • Constructor Details

    • TcpTcTmDataLink

      public TcpTcTmDataLink()
  • 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) throws ConfigurationException
      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 AbstractTcTmParamLink
      config - - the configuration - cannot be null (but can be empty)
      Throws:
      ConfigurationException
    • checkAndOpenSocket

      protected void checkAndOpenSocket() throws IOException
      Throws:
      IOException
    • isSocketOpen

      protected boolean isSocketOpen()
    • sendBuffer

      protected void sendBuffer(byte[] data) throws IOException
      Throws:
      IOException
    • closeSocket

      protected void closeSocket()
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • getNextPacket

      public TmPacket getNextPacket()
    • sendCommand

      public boolean sendCommand(PreparedCommand pc)
      Description copied from interface: TcDataLink
      Attempt to send the command and return true if the command has been sent or its processing has finished.

      If false is returned, the LinkManager will attempt to send the command via the next TC link (if any).

      The link is expected to update the CommandHistoryPublisher.AcknowledgeSent_KEY ack 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.AcknowledgeSent_KEY ack 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:
      sendCommand in interface TcDataLink
      Returns:
    • doStart

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

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

      public void doDisable()
      Overrides:
      doDisable in class AbstractLink
    • doEnable

      public void doEnable()
      Overrides:
      doEnable 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
    • connectionStatus

      protected 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