Package de.bsvrz.kex.tls.osi7
Class TlsData
java.lang.Object
de.bsvrz.kex.tls.osi7.TlsData
public class TlsData
extends java.lang.Object
Ermöglicht über ein TlsData Objekt eine komfortablen Zugriff auf TlsByte[]-Daten. Der Zugriff auf die Daten erfolgt
gekapselt über die Klassenmethoden. Es lassen sich mehrere Byte Lesen oder Schreiben, wobei die entsprechenden
Methoden die Interpretation bzgl. Reihenfolge und Wert (Low-High-ExtraHigh-Byte) vornehmen. Eine Lese- oder
Schreiboperation setzt den interen Lesezeiger im um die notwendige Anzahl Bytes weiter, so dass kontinuierlich
geschrieben bzw. gelesen werden kann. Wird über das Ende hinaus gelesen, so wird eine
ArrayIndexOutOfBoundsException
erzeugt. Das übergebene tlsByte[] wird nicht verändert.-
Constructor Summary
-
Method Summary
Modifier and Type Method Description void
backStepReadPosition()
Setzt die Leseposition für den nächsten Zugriff auf den Wert vor dem letzten Zugriff.int
currentReadPosition()
Gibt die aktuelle Leseposition zurück.int
currentWritePosition()
Gibt die aktuelle Schreibposition zurück.int
lastReadPosition()
Gibt die Leseposition vor dem letzten Zugriff zurück.int
lastWritePosition()
Gibt die Schreibposition vor dem letzten Zugriff zurück.int
length()
Gibt die Länge (Anzahl der Bytes) der Daten zurück.int
readExtraHighHighLowByteAsHalfByteAsInt()
Liest drei TlsByte als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999).int
readHighLowByteAsHalfByteAsInt()
Liest zwei TlsByte als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999).TlsData
readNextTlsDataBlock()
Erzeugt einen neues TlsData Objekt, indem es das Byte an der aktuellen Leseposition als Länge eines nachfolgenden Datenblocks interpretiert und diesen nachfolgenden Datenblock liest und in ein TlsData-Objekt konvertiert.TlsData
readNextTlsDataBlock(int count)
Erzeugt einen neues TlsData Objekt, indem es ab der aktuellen Leseposition die übergebene Anzahl Bytes liest und in ein TlsData-Objekt konvertiert.int
readSignedByteAsInt()
Liest ein TlsByte als vorzeichenbehafteten Wert (-128..127).int
readSignedLowHighByteAsInt()
Liest zwee TlsByte als als LowByte und HighByte vorzeichenbehaftet (-32640..32639).int
readUnsignedByteAsInt()
Liest ein TlsByte als vorzeichenlosen Wert (0..255).int
readUnsignedExtraHighHighLowByteAsInt()
Liest drei TlsByte als ExtaHighByte, HighByte und LowByte (0..16777215).int
readUnsignedHighLowByteAsInt()
Liest zwei TlsByte als HighByte und LowByte (0..65535).int
readUnsignedLowHighByteAsInt()
Liest zwei TlsByte als LowByte und HighByte (0..65535).int
readUnsignedLowHighExtraHighByteAsInt()
Liest drei TlsByte als LowByte, HighByte und ExtrHighByte (0..16777215).int
readUnsignedLowHighExtraHighVeryHighByteAsInt()
Liest vier TlsByte als LowByte, HighByte, ExtrHighByte und VeryHighByte.int
readUnsignedLowOrLowHighByteAsInt()
Liest ein oder zwei TlsByte als LowByte oder LowByte und HighByte (0..32767).int
readUnsignedVeryHighExtraHighHighLowByteAsInt()
Liest vier TlsByte als VeryHighByte, ExtaHighByte, HighByte und LowByte.void
rewindReadPosition()
Setzt die Leseposition auf den Anfang.byte[]
toBytes()
Gibt die Daten, die durch das TlsData-Objekt repräsentiert werden, als byte[] zurück.java.lang.String
toString()
Gibt den Inhalt als HexDump aus.void
writeByteArray(byte[] data)
Schreibt ein byte[] ab der aktuellen Schreibposition.void
writeIntAsByte(int data)
Schreibt ein TlsByte (0..255).void
writeIntAsByte(int data, int index)
Schreibt ein TlsByte (0..255) an die angegebene Position.void
writeIntAsExtraHighHighLowByte(int data)
Schreibt drei "TlsByte" als ExtrHighByte, HighByte und LowByte (0..16777215).void
writeIntAsExtraHighHighLowByteAsHalfByte(int data)
Schreibt drei "TlsByte" als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999).void
writeIntAsHighLowByte(int data)
Schreibt zwei "TlsByte" als HighLowByte und LowByte (0..65535).void
writeIntAsHighLowByteAsHalfByte(int data)
Schreibt zwei "TlsByte" als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999).void
writeIntAsLowHighByte(int data)
Schreibt zwei "TlsByte" als LowByte und HighByte (0..65535).void
writeIntAsLowHighExtraHighByte(int data)
Schreibt drei "TlsByte" als LowByte, HighByte und ExtrHighByte (0..16777215).void
writeTlsData(TlsData data)
Schreibt ein TlsData-Objekt ab der aktuellen Schreibposition.
-
Constructor Details
-
TlsData
public TlsData(byte[] tlsBytes)Konsturiert ein TlsData Objekt auf Basis der übergebenen tlsBytes[]. Der Zugriff auf die Daten erfolgt gekapselt über die Klassenmethoden. Das übergebene tlsByte[] wird nicht verändert.- Parameters:
tlsBytes
- Datenblock gemäß TLS.
-
TlsData
public TlsData(int length)Konsturiert ein TlsData Objekt auf Basis der übergebenen Größe. Der Zugriff auf die Daten erfolgt gekapselt über die Klassenmethoden. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
length
- Initiale Länge des TlsData-Objekts.
-
-
Method Details
-
toString
public java.lang.String toString()Gibt den Inhalt als HexDump aus.- Overrides:
toString
in classjava.lang.Object
- Returns:
- HexDump des Inhalts vom TlsData Objekt.
-
backStepReadPosition
public void backStepReadPosition()Setzt die Leseposition für den nächsten Zugriff auf den Wert vor dem letzten Zugriff. -
currentReadPosition
public int currentReadPosition()Gibt die aktuelle Leseposition zurück.- Returns:
- Aktuelle Leseposition.
-
currentWritePosition
public int currentWritePosition()Gibt die aktuelle Schreibposition zurück.- Returns:
- Aktuelle Schreibposition.
-
lastReadPosition
public int lastReadPosition()Gibt die Leseposition vor dem letzten Zugriff zurück.- Returns:
- Leseposition vor dem letzten Zugriff.
-
lastWritePosition
public int lastWritePosition()Gibt die Schreibposition vor dem letzten Zugriff zurück.- Returns:
- Schreibposition vor dem letzten Zugriff.
-
readExtraHighHighLowByteAsHalfByteAsInt
public int readExtraHighHighLowByteAsHalfByteAsInt()Liest drei TlsByte als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999). Liegt der Wert ausserhalb des Wertebereichs, so wird der Wert 0 zurückgegeben. Setzt die Leseposition um 3 Positionen weiter.- Returns:
- Wert der 3 TlsByte im Bereich von 0..999999.
-
readHighLowByteAsHalfByteAsInt
public int readHighLowByteAsHalfByteAsInt()Liest zwei TlsByte als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999). Liegt der Wert ausserhalb des Wertebereichs, so wird der Wert 0 zurückgegeben. Setzt den Leseposition um 2 Positionen weiter. Positionen weiter.- Returns:
- Wert der 2 TlsByte im Bereich von 0..9999.
-
readNextTlsDataBlock
Erzeugt einen neues TlsData Objekt, indem es das Byte an der aktuellen Leseposition als Länge eines nachfolgenden Datenblocks interpretiert und diesen nachfolgenden Datenblock liest und in ein TlsData-Objekt konvertiert.- Returns:
- TlsData-Objekt.
-
readUnsignedByteAsInt
public int readUnsignedByteAsInt()Liest ein TlsByte als vorzeichenlosen Wert (0..255). Setzt den Leseposition 1 Position weiter.- Returns:
- Wert des TlsByte als vorzeichenloser Wert im Bereich von 0..255.
-
readNextTlsDataBlock
Erzeugt einen neues TlsData Objekt, indem es ab der aktuellen Leseposition die übergebene Anzahl Bytes liest und in ein TlsData-Objekt konvertiert.- Parameters:
count
- Anzahl der zu lesenden Byte.- Returns:
- TlsData-Objekt.
-
toBytes
public byte[] toBytes()Gibt die Daten, die durch das TlsData-Objekt repräsentiert werden, als byte[] zurück. Ändert den Zustand des TlsData-Objekts nicht, verändert also auch nicht die Schreib-/Leseposition. Dient z.B. dazu, die Daten als Byte[] für das Senden als TLS-Telegramm zu erhalten.- Returns:
- TlsData-Objekt Daten als Byte-Array.
- Throws:
java.lang.IllegalArgumentException
- Wenn im zu konvertierenden int-Array Werte außerhalb des Bereich 0-255 vorkommen.
-
length
public int length()Gibt die Länge (Anzahl der Bytes) der Daten zurück.- Returns:
- Länge (Anzahl der Bytes) der Daten.
-
readSignedByteAsInt
public int readSignedByteAsInt()Liest ein TlsByte als vorzeichenbehafteten Wert (-128..127). Setzt den Leseposition 1 Position weiter.- Returns:
- Wert des TlsByte als vorzeichenbehafteten Wert (-128..127).
-
readSignedLowHighByteAsInt
public int readSignedLowHighByteAsInt()Liest zwee TlsByte als als LowByte und HighByte vorzeichenbehaftet (-32640..32639). Setzt den Leseposition 1 Position weiter.- Returns:
- Wert der 2 TlsByte als vorzeichenbehafteten Wert (-32640..32639).
-
readUnsignedExtraHighHighLowByteAsInt
public int readUnsignedExtraHighHighLowByteAsInt()Liest drei TlsByte als ExtaHighByte, HighByte und LowByte (0..16777215). Setzt den Leseposition 3 Positionen weiter.- Returns:
- Wert der 3 TlsByte im Bereich von 0..16777215.
-
readUnsignedHighLowByteAsInt
public int readUnsignedHighLowByteAsInt()Liest zwei TlsByte als HighByte und LowByte (0..65535). Setzt den Leseposition 2 Positionen weiter.- Returns:
- Wert der 2 TlsByte im Bereich von 0..65535.
-
readUnsignedLowHighByteAsInt
public int readUnsignedLowHighByteAsInt()Liest zwei TlsByte als LowByte und HighByte (0..65535). Setzt den Leseposition 2 Positionen weiter.- Returns:
- Wert der 2 TlsByte im Bereich von 0..65535.
-
readUnsignedLowHighExtraHighByteAsInt
public int readUnsignedLowHighExtraHighByteAsInt()Liest drei TlsByte als LowByte, HighByte und ExtrHighByte (0..16777215). Setzt den Leseposition 3 Positionen weiter.- Returns:
- Wert der 3 TlsByte im Bereich von 0..16777215.
-
readUnsignedLowHighExtraHighVeryHighByteAsInt
public int readUnsignedLowHighExtraHighVeryHighByteAsInt()Liest vier TlsByte als LowByte, HighByte, ExtrHighByte und VeryHighByte. Setzt den Leseposition 4 Positionen weiter.- Returns:
- Wert der 3 TlsByte im Bereich von 0..16777215.
-
readUnsignedLowOrLowHighByteAsInt
public int readUnsignedLowOrLowHighByteAsInt()Liest ein oder zwei TlsByte als LowByte oder LowByte und HighByte (0..32767). Für Werte kleiner 128 Kodierung als 1 - Byte - Wert, sonst als 2 - Byte - Wert. Die Kennzeichnung erfolgt im 7. Bit des 1. Bytes(low Byte) eines Wertes. Ist dieses gesetzt(1), so ist die Verkehrsstärke als 1 - Byte - Wert codiert und der Wert ermittelt sich als Byte1 128. Ist das Bit nicht gesetzt, so ist der Wert als 2 - Byte - Wert codiert und ermittelt sich als Byte1 + Byte2 * 128.- Returns:
- Wert der 1 oder 2 TlsByte im Bereich von 0..32767.
-
readUnsignedVeryHighExtraHighHighLowByteAsInt
public int readUnsignedVeryHighExtraHighHighLowByteAsInt()Liest vier TlsByte als VeryHighByte, ExtaHighByte, HighByte und LowByte. Setzt den Leseposition 4 Positionen weiter.- Returns:
- Wert der 4 TlsByte im Bereich.
-
rewindReadPosition
public void rewindReadPosition()Setzt die Leseposition auf den Anfang. -
writeByteArray
public void writeByteArray(byte[] data)Schreibt ein byte[] ab der aktuellen Schreibposition. Setzt den Schreibposition byte.length Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Das zu scheibende byte[].
-
writeIntAsByte
public void writeIntAsByte(int data)Schreibt ein TlsByte (0..255). Setzt den Schreibposition 1 Position weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsByte
public void writeIntAsByte(int data, int index)Schreibt ein TlsByte (0..255) an die angegebene Position. Verändert weder Lese- noch Schreibposition.- Parameters:
data
- Der zu konvertierende Wert.index
- Index des TLSBytes, welcher geschrieben werden soll.
-
writeIntAsExtraHighHighLowByte
public void writeIntAsExtraHighHighLowByte(int data)Schreibt drei "TlsByte" als ExtrHighByte, HighByte und LowByte (0..16777215). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsExtraHighHighLowByteAsHalfByte
public void writeIntAsExtraHighHighLowByteAsHalfByte(int data)Schreibt drei "TlsByte" als ExtraHighByte, HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..999999). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsHighLowByte
public void writeIntAsHighLowByte(int data)Schreibt zwei "TlsByte" als HighLowByte und LowByte (0..65535). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsHighLowByteAsHalfByte
public void writeIntAsHighLowByteAsHalfByte(int data)Schreibt zwei "TlsByte" als HighByte und LowByte und interpretiert diese jeweils als Halbbytes in Dezimaldarstellung (0..9999). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsLowHighByte
public void writeIntAsLowHighByte(int data)Schreibt zwei "TlsByte" als LowByte und HighByte (0..65535). Setzt den Schreibposition 2 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeIntAsLowHighExtraHighByte
public void writeIntAsLowHighExtraHighByte(int data)Schreibt drei "TlsByte" als LowByte, HighByte und ExtrHighByte (0..16777215). Setzt den Schreibposition 3 Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Der zu konvertierende Wert.
-
writeTlsData
Schreibt ein TlsData-Objekt ab der aktuellen Schreibposition. Setzt den Schreibposition data.length Positionen weiter. Wird über das Ende hinaus geschrieben, wird das Objekt automatisch vergrößert.- Parameters:
data
- Das zu scheibende byte[].
-