de.bsvrz.kex.tls.osi2osi3.longtelegram
Class Osi7LongTelegramRecombine

java.lang.Object
  extended by de.bsvrz.kex.tls.osi2osi3.longtelegram.Osi7LongTelegramRecombine

public class Osi7LongTelegramRecombine
extends Object

Diese Klasse stellt ein Objekt zur Verfügung, um Langtelegramm zu verarbeiten.

Author:
Kappich Systemberatung

Nested Class Summary
private static class Osi7LongTelegramRecombine.Receiver
           
private static class Osi7LongTelegramRecombine.ReceiverKey
           
 
Field Summary
private  Map<Osi7LongTelegramRecombine.ReceiverKey,Osi7LongTelegramRecombine.Receiver> _dataReceivers
          Diese Map speichert alle Empfänger.
private static Debug _debug
          DebugLogger für Debug-Ausgaben
 
Constructor Summary
Osi7LongTelegramRecombine()
           
 
Method Summary
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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_dataReceivers

private final Map<Osi7LongTelegramRecombine.ReceiverKey,Osi7LongTelegramRecombine.Receiver> _dataReceivers
Diese Map speichert alle Empfänger. Der Empfänger "baut" sich aus den erhaltenen Telegrammen ein Langtelegramm zusammen.


_debug

private static final Debug _debug
DebugLogger für Debug-Ausgaben

Constructor Detail

Osi7LongTelegramRecombine

public Osi7LongTelegramRecombine()
Method Detail

telegramReceived

public boolean telegramReceived(byte[] telegram)
Erstellt ein Langtelegramm. Teilstücke werden an das bestehende Langtelegramm eingefügt.

Parameters:
telegram - Teil eines Langtelegramms, das eingefügt werden soll. Dies kann auch den Anfang eines Langtelegramms darstellen
Returns:
true = Das Langtelegramm ist fertig und kann angfordert werden; false = Es fehlen noch Stücke, damit das Langtelegramm fertiggestellt werden kann

getLongTelegram

public byte[] getLongTelegram(byte[] telegram)
                       throws IllegalStateException
Gibt ein fertiges Langtelegramm zurück, damit das fertige Langtelegramm gefunden werden kann, wird das letzte Teiltelegramm übergeben.

Parameters:
telegram - Ein Teiltelegramm, das zu dem Langtelegramm gehört. Aus diesem Telegramm werden Informationen ausgelesen, um das richtige Langtelegramm zu finden.
Returns:
fertiges Langtelegramm
Throws:
IllegalStateException - Das angeforderte Langtelegramm war noch nicht fertig

getReceiver

private 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.

Parameters:
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 gespeichert
Returns:
Empfänger für Telegramme

removeReceiver

private 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.

Parameters:
key - Schlüssel des Objekts, das entfernt werden soll

getDataBlockType

private static final int getDataBlockType(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm den DatenBlockTyp aus.

Parameters:
receivedData - empfangendes Langtelegramm
Returns:
DatenblockTyp

getDataBlockNumber

private static final int getDataBlockNumber(byte[] receivedData)
Diese Methode liest aus einem übergebenen Langtelegramm die DatenBlockNummer aus.

Parameters:
receivedData - empfangendes Langtelegramm
Returns:
DatenBlockNummer

getSenderAddress

private static final int getSenderAddress(byte[] receivedData)
Diese Methode übergibt aus einem übergebenen Langtelegramm die Absenderadresse aus.

Parameters:
receivedData - empfangendes Langtelegramm
Returns:
Absenderadresse

getLongType

private static final LongTelegramType getLongType(byte[] receivedData)
                                           throws IllegalArgumentException
Throws:
IllegalArgumentException