private static final class Osi7LongTelegramRecombine.Receiver extends Object
Modifier and Type | Field and Description |
---|---|
private int |
_currentByteArrayPosition
Bestimmt, an welcher Stelle das empfangende Byte-Array eingefügt werden soll
|
private boolean |
_firstTelegramReceived |
private Osi7LongTelegramRecombine.ReceiverKey |
_keyForThisReceiver
Unter diesem Schlüssel ist das Objekt in einer Map gespeichert
|
private int |
_numberOfNeededPieces
Speichert wieviele Stücke insgesamt zu einem Lang-Telegramm gehören (dieser Wert wird nur bei Big und Bigger Paketen benutzt)
|
private int |
_numberOfPiecesReceived
Speichert wieviele Pakete bisher empfangen wurden (daraus ergibt sich auch die Nummer des nächsten Stücks, das erwartet wird)
|
private Osi7LongTelegramRecombine |
_receiverManager
Dieses Objekt stellt eine Methode zur Verfügung, mit dem sich dieses Objekt aus einer Map entfernen kann.
|
private byte[] |
_telegram
In diesem Byte-Array wird das Langtelegramm zusammengebaut.
|
private boolean |
_telegramFinished
Diese Variable wird true, sobald ein Telegramm fertiggestellt ist.
|
private LongTelegramType |
_typeOfData
Speichert die Art des Pakets, alle folgenden Telegramme müssen von der gleichen Art sein.
|
Constructor and Description |
---|
Osi7LongTelegramRecombine.Receiver(Osi7LongTelegramRecombine.ReceiverKey keyForThisReceiver,
Osi7LongTelegramRecombine receiverManager) |
Modifier and Type | Method and Description |
---|---|
private void |
analyzeFirstTelegram(byte[] firstTelegram)
Diese Methode prüft ein Paket, ob es ein gültiges Startpaket ist (ShortBlock, StartBigBlock, StartBiggerBlock).
|
private void |
cancelReceiver()
Diese Methode wird aufgerufen, wenn ein Receiverobjekt sich aus der Liste der Empfänger austragen lassen möchte.
|
byte[] |
getLongTelegram()
Gibt das fertige Telegramm zurück und entfernt den Empfänger aus der Liste von Empfängern.
|
private void |
handleSecondStartTelegram()
Diese Methode wird aufgerufen, wenn ein Teiltelegramm empfangen wurde, das ein neues Startpaket ist.
|
private boolean |
isFirstTelegram(byte[] firstTelegram)
Diese Methode prüft, ob ein Telegramm als gültiges Starttelegramm erkannt werden könnte.
|
boolean |
isTelegramFinished() |
void |
newData(byte[] receivedData) |
private void |
telegramCompleted()
Diese Methode wird aufgerufen, wenn ein Telegramm komplett empfangen wurde.
|
String |
toString() |
private final Osi7LongTelegramRecombine.ReceiverKey _keyForThisReceiver
private final Osi7LongTelegramRecombine _receiverManager
private byte[] _telegram
private LongTelegramType _typeOfData
private int _numberOfNeededPieces
private int _numberOfPiecesReceived
private int _currentByteArrayPosition
private boolean _firstTelegramReceived
private boolean _telegramFinished
public Osi7LongTelegramRecombine.Receiver(Osi7LongTelegramRecombine.ReceiverKey keyForThisReceiver, Osi7LongTelegramRecombine receiverManager)
public void newData(byte[] receivedData)
private void telegramCompleted()
public boolean isTelegramFinished()
public byte[] getLongTelegram() throws IllegalStateException
IllegalStateException
- Das Langtelegramm wurde noch nicht fertiggestelltprivate void cancelReceiver()
private void handleSecondStartTelegram()
private boolean isFirstTelegram(byte[] firstTelegram)
firstTelegram
- Telegramm, das geprüft werden soll.private void analyzeFirstTelegram(byte[] firstTelegram) throws IllegalStateException
firstTelegram
- Telegramm, das geprüft werden sollIllegalStateException
- Das übergebene Telegramm ist kein gültiges erstes Paket (ShortBlock, StartBigBlock, StartBiggerBlock)