Schnittstelle SerializableDataset

Alle bekannten Implementierungsklassen:
AsyncSerializableDataset, RegularSerializableDataset

public interface SerializableDataset
Interface, für Datensätze, die archiviert werden können. Um einen SerializableDataset zu erhalten, sollte einer der statischen Factory-Methoden dieses Interfaces benutzt werden.
  • Methodendetails

    • createGap

      @NotNull @Contract("_, _, _ -> new") static SerializableDataset createGap(long archTime, long dataIdx, long dataTime)
      Erstellt einen SerializableDataset, der eine (potenzielle) Datenlücke repräsentiert.
      Parameter:
      archTime - Archivzeit
      dataIdx - Datenindex
      dataTime - Datenzeit
      Gibt zurück:
      neuer Datensatz
    • create

      @NotNull @Contract("_ -> new") static SerializableDataset create(ContainerDataResult result)
      Erstellt einen neuen SerializableDataset basierend auf bereits archivierten Daten. Das ist z. B. für die Migration sinnvoll.
      Parameter:
      result - Bereits archivierte Daten
      Gibt zurück:
      neuer Datensatz
    • create

      @NotNull static SerializableDataset create(de.bsvrz.dav.daf.main.Dataset dataset, long archiveTime, SerializeTaskHelper helper)
      Erstellt einen neuen SerializableDataset basierend auf einem Datenverteiler-Datensatz.
      Parameter:
      dataset - Datenverteiler-Datensatz (z. B. ein ResultData)
      archiveTime - Archivzeit
      helper - Hilfsklasse für Kompression mit Puffer. Diese Klasse ist nicht threadsafe und darf nur von einem create-Aufruf gleichzeitig benutzt werden.
      Gibt zurück:
      neuer Datensatz
    • createAsync

      @NotNull @Contract("_, _, _ -> new") static SerializableDataset createAsync(de.bsvrz.dav.daf.main.Dataset dataset, long archiveTime, SignalingQueue<AsyncSerializableDataset> serializeQueue)
      Erstellt einen neuen SerializableDataset basierend auf einem Datenverteiler-Datensatz. Die Serialisierung des Datenverteiler-Datensatzes erfolgt asynchron, indem ein AsyncSerializableDataset in die übergebene Queue eingefügt wird. Diese Queue muss extern von einem Thread oder Threadpool abgearbeitet werden, was unabhängig von dieser Methode implementiert werden muss.

      Im Archivsystem wird die Queue vom SerializeTask abgearbeitet.

      Parameter:
      dataset - Datenverteiler-Datensatz (z. B. ein ResultData)
      archiveTime - Archivzeit
      serializeQueue - Queue, in der der Serialisierungsjob eingefügt wird.
      Gibt zurück:
      neuer Datensatz
    • archiveTime

      long archiveTime()
      Gibt die Archivzeit in Millisekunden seit Epoch zurück.
      Gibt zurück:
      die Archivzeit
    • dataTime

      long dataTime()
      Gibt die Datenzeit in Millisekunden seit Epoch zurück.
      Gibt zurück:
      die Datenzeit
    • dataIndex

      long dataIndex()
      Gibt den Datenindex zurück.
      Gibt zurück:
      den Datenindex
    • dataState

      @NotNull de.bsvrz.dav.daf.main.DataState dataState()
      Gibt den Zustand des Datensatzes zurück.
      Gibt zurück:
      den Zustand des Datensatzes
    • serializedData

      @NotNull byte[] serializedData()
      Gibt ein den serialisierten Data-Inhalt zurück. Die Daten sind evtl. komprimiert (siehe uncompressedSize()). Datenlücken werden als 6-Byte Folge wie ContainerFile.NO_SOURCE usw. zurückgegeben. Dieses Byte-Array enthält noch nicht den Header mit Zeitstempeln usw., wie er in die Containerdatei geschrieben wird. Dieser kann mit ArchiveDataSerializer.serializeData(SerializableDataset) erzeugt werden.
      Gibt zurück:
      serialisierte und ggf. komprimierte Daten
    • estimateMemoryUsage

      long estimateMemoryUsage()
      Schätz den Speicherverbrauch dieses Objekts
      Gibt zurück:
      Speicherverbrauch in Bytes
    • hasData

      default boolean hasData()
      Gibt zurück, ob Nutzdaten vorhanden sind. Dies ist der Fall, wenn dataState() den Wert DataState.DATA zurückliefert.
      Gibt zurück:
      Sind Nutzdaten vorhanden?
    • originalData

      @Nullable de.bsvrz.dav.daf.main.Data originalData()
      Gibt den ursprünglichen empfangenen Dateninhalt zurück. Der Wert kann null sein und ist nur vorhanden, wenn die Daten vorher vom Datenverteiler empfangen wurden. Dies wird nur für die Quittierung benötigt.
      Gibt zurück:
      Originaler Datensatz
    • asResultData

      default de.bsvrz.dav.daf.main.ResultData asResultData(de.bsvrz.dav.daf.main.config.DataModel dataModel, IdDataIdentification did, boolean isDelayed)
      Gibt für die Quittierung diesen Datensatz als ResultData zurück.

      Dies ist nur möglich, wenn in originalData() der ursprüngliche Datensatz übergeben wurde.

      Parameter:
      dataModel - Datenmodell
      did - Datenidentifikation
      isDelayed - Nachgeliefert?
      Gibt zurück:
      Datenverteiler-Datensatz
    • uncompressedSize

      int uncompressedSize()
      Gibt die Größe des originalen, unkomprimierten Daten-Arrays zurück. Enthält 0 (=ContainerFile.NOT_COMPRESSED) falls die Daten unkomprimiert sind, dann zählt die Größe des serializedData-Bytearrays.
      Gibt zurück:
      die Größe des unkomprimierten Daten-Arrays