Class FilePollingTmDataLink

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

public class FilePollingTmDataLink extends AbstractTmDataLink implements Runnable
TM packet data link which reads telemetry files from a specified directory. The files are split into packets according to the configure packetInputStream, run through the configured preprocessor and then sent on the stream.

The data link scans continuously the incoming directory for new files. If multiple files are found, it processes them in alphabetical order.

If the file is gzip-compressed, the GZIPInputStream is used to decompress it. To check if the file is gzip-compressed, the first two bytes of the file are read and compared with 0x1F8B (gzip magic number).

Options:

  • incomingDir - the directory where the files are read from.
  • deleteAfterImport - if true (default), the files will be removed after being read.
  • delayBetweenPackets - if configured, it is the number of milliseconds to wait in between sending two packets. By default it is -1 meaning the packets are sent as fast as possible.
  • lastPacketStream - If specified, emit the last packet to this stream. This is intended for batch imports, where the content of the last packet should also be observable by realtime clients
  • headerSize - if configured, the input files have a header which will be skipped before reading the first packet.
  • Constructor Details

    • FilePollingTmDataLink

      public FilePollingTmDataLink()
  • 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 yamcsInstance, 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 AbstractTmDataLink
      config - - the configuration - cannot be null (but can be empty)
    • run

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

      public static InputStream getInputStream(String fileName) throws IOException
      Throws:
      IOException
    • 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
    • doDisable

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

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