Class CcsdsTmIndex

  • All Implemented Interfaces:
    com.google.common.util.concurrent.Service, TmIndexService, YamcsService, StreamSubscriber

    public class CcsdsTmIndex
    extends AbstractYamcsService
    implements TmIndexService
    Completeness index of CCSDS telemetry. The structure of the rocksdb records:
     key: tbsIndex[4 bytes], apid[2bytes], start time[8 bytes], start seq count[2 bytes]
     value: end time[8bytes], end seq count[2 bytes], num packets [4 bytes]
     
    FIXME: because the sequence count wraps around, there is a bug in case packets with the same timestamp and wrapped around sequence counts are received - see testApidIndexSameTimeAndWraparound for failing test. the old TokyoCabinet based indexer didn't use the sequence count as part of the key but allowed multiple records with the same key. To replicate this in RocksDB, one would need to have the RocksDB entries composed of all records with the same startime
    • Constructor Detail

      • CcsdsTmIndex

        public CcsdsTmIndex()
    • Method Detail

      • init

        public void init​(String yamcsInstance,
                         String serviceName,
                         YConfiguration args)
                  throws InitException
        Description copied from interface: YamcsService
        Initialize this service. This is called before the service is started. All operations should finish fast.
        Specified by:
        init in interface YamcsService
        Overrides:
        init in class AbstractYamcsService
        Parameters:
        yamcsInstance - The yamcs instance, or null if this is a global service.
        serviceName - The service name.
        args - The configured arguments for this service. If YamcsService.getSpec() is implemented then this contains the arguments after being validated (including any defaults).
        Throws:
        InitException - When something goes wrong during the execution of this method.
      • 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
      • printApidDb

        public void printApidDb()
                         throws org.rocksdb.RocksDBException
        Throws:
        org.rocksdb.RocksDBException
      • printApidDb

        public void printApidDb​(short apid,
                                long start,
                                long stop)
                         throws org.rocksdb.RocksDBException
        Throws:
        org.rocksdb.RocksDBException
      • getIterator

        public IndexIterator getIterator​(List<org.yamcs.protobuf.Yamcs.NamedObjectId> names,
                                         long start,
                                         long stop)
        Description copied from interface: TmIndexService
        return an iterator that provides all the index entries between start and stop
        Specified by:
        getIterator in interface TmIndexService
        Parameters:
        names - can be used to filter which entries are returned. If null, everything is returned.
        Returns: