Class ArchiveDataSerializer

java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.ArchiveDataSerializer

public class ArchiveDataSerializer
extends java.lang.Object
Klasse, die Archivdaten serialisiert um diese in Containerdateien zu schreiben.
See Also:
ContainerFileHandle.appendSerializedData(byte[], int)
  • Constructor Summary

    Constructors
    Constructor Description
    ArchiveDataSerializer()  
  • Method Summary

    Modifier and Type Method Description
    int embedSerialializedData​(long arcTime, long dataTime, long dataIdx, byte[] serData, byte[] dest, java.util.zip.Deflater compressor)
    Schreibt das Bytefeld mit allen Datensatz-Headern, so dass es mit ContainerFile.appendSerializedData(ArchiveDataSerializer) geschrieben werden kann.
    byte[] getActualWriteBuf()
    Gibt den Schreibpuffer zurück
    int getTotalWriteDataSize()
    Gibt die benutzte Länge des Schreibpuffers zurück
    int serializeData​(de.bsvrz.dav.daf.main.ResultData rd, long arcTime, java.util.zip.Deflater compressor)
    Serialisiert den übergebenen Datensatz und speichert ihn in actualWriteBuf und totalWriteDataSize.
    int serializeDataGap​(long dataIndex, long dataTime, long archiveTime, java.util.zip.Deflater compressor)
    Serialisiert einen Datensatz der eine Datenlücke kennzeichnet und speichert ihn in actualWriteBuf und totalWriteDataSize.
    int serializeReqData​(de.bsvrz.dav.daf.main.archive.ArchiveData ad, long arcTime, java.util.zip.Deflater compressor)
    Serialisiert den übergebenen Datensatz und speichert ihn in actualWriteBuf und totalWriteDataSize.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ArchiveDataSerializer

      public ArchiveDataSerializer()
  • Method Details

    • serializeData

      public int serializeData​(de.bsvrz.dav.daf.main.ResultData rd, long arcTime, java.util.zip.Deflater compressor) throws PersistenceException
      Serialisiert den übergebenen Datensatz und speichert ihn in actualWriteBuf und totalWriteDataSize. Da der ArchivTask vor dem Archivieren wissen muss, ob der Container zu lang wird und abgeschlossen werden muss, ist das Anhängen eines Datensatzes auf diese Methode und ContainerFile.appendSerializedData(ArchiveDataSerializer) aufgeteilt. Wenn der Datensatz ein Spezialfall ist (keine Quelle, keine Daten, Datenlücke), wird ein speziell codierter Datensatz verwendet.
      Parameters:
      rd - Zu archivierender Datensatz
      arcTime - Archivzeitstempel
      compressor - Komprimierungsklasse
      Returns:
      Länge des serialisierten Datensatzes
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • serializeReqData

      public int serializeReqData​(de.bsvrz.dav.daf.main.archive.ArchiveData ad, long arcTime, java.util.zip.Deflater compressor) throws PersistenceException
      Serialisiert den übergebenen Datensatz und speichert ihn in actualWriteBuf und totalWriteDataSize. Da der ArchivRequestedTask vor dem Archivieren wissen muss, ob der Container zu lang wird und abgeschlossen werden muss, ist das Anhängen eines Datensatzes auf die Methoden serializeReqData und ContainerFile.appendSerializedData(ArchiveDataSerializer) aufgeteilt. Wenn der Datensatz ein Spezialfall ist (keine Quelle, keine Daten), wird ein speziell codierter Datensatz verwendet.

      Diese Methode wird zum serialisieren von nachgeforderten Datensätzen verwendet.

      Parameters:
      ad - Zu archivierender Datensatz
      arcTime - Archivzeitstempel
      compressor - Deflater zum Komprimieren
      Returns:
      Länge des serialisierten Datensatzes
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis
    • serializeDataGap

      public int serializeDataGap​(long dataIndex, long dataTime, long archiveTime, java.util.zip.Deflater compressor)
      Serialisiert einen Datensatz der eine Datenlücke kennzeichnet und speichert ihn in actualWriteBuf und totalWriteDataSize. Da der ArchivTask vor dem Archivieren wissen muss, ob der Container zu lang wird und abgeschlossen werden muss, ist das Anhängen eines Datensatzes auf die Methoden serializeData(ResultData, long, Deflater) und ContainerFile.appendSerializedData(ArchiveDataSerializer) aufgeteilt.
      Parameters:
      dataIndex - Datenindex
      dataTime - Datenzeit
      archiveTime - Archivzeit
      compressor - Komprimierer (Deflater)
      Returns:
      Länge des serialisierten Datensatzes
    • embedSerialializedData

      public int embedSerialializedData​(long arcTime, long dataTime, long dataIdx, byte[] serData, byte[] dest, java.util.zip.Deflater compressor)
      Schreibt das Bytefeld mit allen Datensatz-Headern, so dass es mit ContainerFile.appendSerializedData(ArchiveDataSerializer) geschrieben werden kann. Von außen wird diese Methode nur für Testzwecke verwendet. Normalerweise sind die Methoden serializeData(ResultData, long, Deflater) bzw. serializeReqData(ArchiveData, long, Deflater) zu verwenden. Die Daten werden komprimiert abgelegt, wenn sie länger als ContainerFile.MAX_UNCOMPRESSED sind und die Kompression eine Verkuerzung ergeben hat.
      Parameters:
      arcTime - Archivzeit
      dataTime - Datenzeit
      dataIdx - Datenindex
      serData - zu schreibendes Bytefeld
      dest - Ziel
      compressor - Komprimierer (Deflater)
      Returns:
      Länge des serialisierten Datensatzes
    • getActualWriteBuf

      public byte[] getActualWriteBuf()
      Gibt den Schreibpuffer zurück
      Returns:
      den Schreibpuffer
    • getTotalWriteDataSize

      public int getTotalWriteDataSize()
      Gibt die benutzte Länge des Schreibpuffers zurück
      Returns:
      benutzte Länge in Bytes