public class Osi7LongTelegramRecombine
extends java.lang.Object
Diese Klasse stellt ein Objekt zur Verfügung, um Langtelegramm zu verarbeiten.
Modifier and Type | Class and Description |
---|---|
private static class |
Osi7LongTelegramRecombine.Receiver |
private static class |
Osi7LongTelegramRecombine.ReceiverKey |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<Osi7LongTelegramRecombine.ReceiverKey,Osi7LongTelegramRecombine.Receiver> |
_dataReceivers
Diese Map speichert alle Empfänger.
|
private static Debug |
_debug
DebugLogger für Debug-Ausgaben
|
Constructor and Description |
---|
Osi7LongTelegramRecombine() |
Modifier and Type | Method and Description |
---|---|
private static int |
getDataBlockNumber(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm die DatenBlockNummer aus.
|
private static int |
getDataBlockType(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm den DatenBlockTyp aus.
|
byte[] |
getLongTelegram(byte[] telegram)
Gibt ein fertiges Langtelegramm zurück, damit das fertige Langtelegramm gefunden werden kann, wird das letzte Teiltelegramm übergeben.
|
private static LongTelegramType |
getLongType(byte[] receivedData) |
private Osi7LongTelegramRecombine.Receiver |
getReceiver(Osi7LongTelegramRecombine.ReceiverKey key)
Diese Methode prüft, ob ein Empfänger vorhanden ist, wenn ja, dann wird dieser zurückgegeben.
|
private static int |
getSenderAddress(byte[] receivedData)
Diese Methode übergibt aus einem übergebenen Langtelegramm die Absenderadresse aus.
|
private void |
removeReceiver(Osi7LongTelegramRecombine.ReceiverKey key)
Diese Methode entfernt einen Empfänger aus der Map.
|
boolean |
telegramReceived(byte[] telegram)
Erstellt ein Langtelegramm.
|
private final java.util.Map<Osi7LongTelegramRecombine.ReceiverKey,Osi7LongTelegramRecombine.Receiver> _dataReceivers
Diese Map speichert alle Empfänger. Der Empfänger “baut” sich aus den erhaltenen Telegrammen ein Langtelegramm zusammen.
private static final Debug _debug
DebugLogger für Debug-Ausgaben
public boolean telegramReceived(byte[] telegram)
Erstellt ein Langtelegramm. Teilstücke werden an das bestehende Langtelegramm eingefügt.
telegram
- Teil eines Langtelegramms, das eingefügt werden soll. Dies kann auch den Anfang eines Langtelegramms darstellenpublic byte[] getLongTelegram(byte[] telegram) throws java.lang.IllegalStateException
Gibt ein fertiges Langtelegramm zurück, damit das fertige Langtelegramm gefunden werden kann, wird das letzte Teiltelegramm übergeben.
telegram
- Ein Teiltelegramm, das zu dem Langtelegramm gehört. Aus diesem Telegramm werden Informationen ausgelesen, um das richtige Langtelegramm zu finden.java.lang.IllegalStateException
- Das angeforderte Langtelegramm war noch nicht fertigprivate Osi7LongTelegramRecombine.Receiver getReceiver(Osi7LongTelegramRecombine.ReceiverKey key)
Diese Methode prüft, ob ein Empfänger vorhanden ist, wenn ja, dann wird dieser zurückgegeben. Falls kein Empfänger vorhanden ist, wird dieser erzeugt und in der Map gespeichert.
key
- Schlüssel, zu dem ein Empfänger gesucht wird. Ist kein Objekt für den Key vorhanden, wird ein Objekt angelegt und mit dem übergebenen Key in der Map gespeichertprivate void removeReceiver(Osi7LongTelegramRecombine.ReceiverKey key)
Diese Methode entfernt einen Empfänger aus der Map. Die Methode wird vom Empfänger selbst aufgerufen, da nur das Empfängerobjekt weiss, dass es alle benötigten Telegramme erhalten hat.
key
- Schlüssel des Objekts, das entfernt werden sollprivate static final int getDataBlockType(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm den DatenBlockTyp aus.
receivedData
- empfangendes Langtelegrammprivate static final int getDataBlockNumber(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm die DatenBlockNummer aus.
receivedData
- empfangendes Langtelegrammprivate static final int getSenderAddress(byte[] receivedData)
Diese Methode übergibt aus einem übergebenen Langtelegramm die Absenderadresse aus.
receivedData
- empfangendes Langtelegrammprivate static final LongTelegramType getLongType(byte[] receivedData) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException