Package de.bsvrz.ars.ars.mgmt.tasks
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.
-
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 mitContainerFile.appendSerializedData(ArchiveDataSerializer)
geschrieben werden kann.byte[]
getActualWriteBuf()
Gibt den Schreibpuffer zurückint
getTotalWriteDataSize()
Gibt die benutzte Länge des Schreibpuffers zurückint
serializeData(de.bsvrz.dav.daf.main.ResultData rd, long arcTime, java.util.zip.Deflater compressor)
Serialisiert den übergebenen Datensatz und speichert ihn inactualWriteBuf
undtotalWriteDataSize
.int
serializeDataGap(long dataIndex, long dataTime, long archiveTime, java.util.zip.Deflater compressor)
Serialisiert einen Datensatz der eine Datenlücke kennzeichnet und speichert ihn inactualWriteBuf
undtotalWriteDataSize
.int
serializeReqData(de.bsvrz.dav.daf.main.archive.ArchiveData ad, long arcTime, java.util.zip.Deflater compressor)
Serialisiert den übergebenen Datensatz und speichert ihn inactualWriteBuf
undtotalWriteDataSize
.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 PersistenceExceptionSerialisiert den übergebenen Datensatz und speichert ihn inactualWriteBuf
undtotalWriteDataSize
. 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 undContainerFile.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 DatensatzarcTime
- Archivzeitstempelcompressor
- 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 PersistenceExceptionSerialisiert den übergebenen Datensatz und speichert ihn inactualWriteBuf
undtotalWriteDataSize
. 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 undContainerFile.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 DatensatzarcTime
- Archivzeitstempelcompressor
- 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 inactualWriteBuf
undtotalWriteDataSize
. 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 MethodenserializeData(ResultData, long, Deflater)
undContainerFile.appendSerializedData(ArchiveDataSerializer)
aufgeteilt.- Parameters:
dataIndex
- DatenindexdataTime
- DatenzeitarchiveTime
- Archivzeitcompressor
- 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 mitContainerFile.appendSerializedData(ArchiveDataSerializer)
geschrieben werden kann. Von außen wird diese Methode nur für Testzwecke verwendet. Normalerweise sind die MethodenserializeData(ResultData, long, Deflater)
bzw.serializeReqData(ArchiveData, long, Deflater)
zu verwenden. Die Daten werden komprimiert abgelegt, wenn sie länger alsContainerFile.MAX_UNCOMPRESSED
sind und die Kompression eine Verkuerzung ergeben hat.- Parameters:
arcTime
- ArchivzeitdataTime
- DatenzeitdataIdx
- DatenindexserData
- zu schreibendes Bytefelddest
- Zielcompressor
- 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
-