Interface SerializableDataset

All Known Implementing Classes:
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.
  • Method Details

    • createGap

      @NotNull @Contract("_, _, _ -> new") static SerializableDataset createGap(long archTime, long dataIdx, long dataTime)
      Erstellt einen SerializableDataset, der eine (potenzielle) Datenlücke repräsentiert.
      Parameters:
      archTime - Archivzeit
      dataIdx - Datenindex
      dataTime - Datenzeit
      Returns:
      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.
      Parameters:
      result - Bereits archivierte Daten
      Returns:
      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.
      Parameters:
      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.
      Returns:
      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.

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

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

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

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

      @NotNull de.bsvrz.dav.daf.main.DataState dataState()
      Gibt den Zustand des Datensatzes zurück.
      Returns:
      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.
      Returns:
      serialisierte und ggf. komprimierte Daten
    • estimateMemoryUsage

      long estimateMemoryUsage()
      Schätz den Speicherverbrauch dieses Objekts
      Returns:
      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.
      Returns:
      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.
      Returns:
      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.

      Parameters:
      dataModel - Datenmodell
      did - Datenidentifikation
      isDelayed - Nachgeliefert?
      Returns:
      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.
      Returns:
      die Größe des unkomprimierten Daten-Arrays