de.bsvrz.kex.tls.osi2osi3.longtelegram
Class Osi7LongTelegramSegment.SenderReceiverCombination

java.lang.Object
  extended by de.bsvrz.kex.tls.osi2osi3.longtelegram.Osi7LongTelegramSegment.SenderReceiverCombination
Enclosing class:
Osi7LongTelegramSegment

private static final class Osi7LongTelegramSegment.SenderReceiverCombination
extends Object

Diese Klasse speichert eine Sender/Empfängerkombination und verwaltet diese. Es dürfen nur eine bestimmte Anzahl von Telegramme für eine Kombination verschickt werden. Wenn ein Telegramm verschickt wurde, darf ein weiteres Paket verschickt werden, usw. .


Field Summary
private  LinkedList<Byte> _listWithUnusedDataBlockNumbers
          Diese Liste speichert alle Datenblocknummer, die noch benutzt werden dürfen.
(package private)  int _nodeNumberReceiver
          Wird jedem Telegrammobjekt mitgegeben und wird benötigt um an dieses Objekt über eine Map zu kommen
(package private)  int _nodeNumberSender
          Wird in jedem Telegramm mitgeschickt
(package private)  int _numberOfParallelSendTelegrams
          Telegramme, die gleichzeitig verschickt werden dürfen
(package private)  Semaphore _parallelLocks
          Bei jedem Telegramm, das gesendet werden soll, muss ein Lock angefordert werden.
private  Osi7LongTelegramSegment.SenderThread _sender
          Verschickt das Telegramm
 
Constructor Summary
Osi7LongTelegramSegment.SenderReceiverCombination(int nodeNumberSender, Osi7LongTelegramSegment.SenderThread sender, int nodeNumberReceiver)
           
 
Method Summary
 void removeTelegram(Osi7LongTelegramSegment.FragmentedLongTelegram removeTelegram)
          Diese Methode gibt alle Ressourcen eines Telegramms wieder frei, da es versendet wurde.
 void sendLongTelegram(byte[] longTelegram, int priority)
          Methode, die ein Lang-Telegramm verschickt.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_nodeNumberSender

final int _nodeNumberSender
Wird in jedem Telegramm mitgeschickt


_numberOfParallelSendTelegrams

final int _numberOfParallelSendTelegrams
Telegramme, die gleichzeitig verschickt werden dürfen

See Also:
Constant Field Values

_nodeNumberReceiver

final int _nodeNumberReceiver
Wird jedem Telegrammobjekt mitgegeben und wird benötigt um an dieses Objekt über eine Map zu kommen


_parallelLocks

final Semaphore _parallelLocks
Bei jedem Telegramm, das gesendet werden soll, muss ein Lock angefordert werden. Ist die Anzahl Locks aufgebraucht, ist der Versuch ein weiteres Telegramm zu verschicken blockierend.


_listWithUnusedDataBlockNumbers

private final LinkedList<Byte> _listWithUnusedDataBlockNumbers
Diese Liste speichert alle Datenblocknummer, die noch benutzt werden dürfen. Wird eine Nummer benötigt, wird diese aus der Liste entfernt. Wird einer Nummer "frei" wird diese hinten an der Liste angefügt.


_sender

private final Osi7LongTelegramSegment.SenderThread _sender
Verschickt das Telegramm

Constructor Detail

Osi7LongTelegramSegment.SenderReceiverCombination

public Osi7LongTelegramSegment.SenderReceiverCombination(int nodeNumberSender,
                                                         Osi7LongTelegramSegment.SenderThread sender,
                                                         int nodeNumberReceiver)
Method Detail

sendLongTelegram

public void sendLongTelegram(byte[] longTelegram,
                             int priority)
Methode, die ein Lang-Telegramm verschickt. Das Langtelegramm wird in eine Queue eingetragen und abgearbeitet, sobald es an der Reihe ist

Parameters:
longTelegram - Lang-Telegramm, das verschickt werden soll

removeTelegram

public void removeTelegram(Osi7LongTelegramSegment.FragmentedLongTelegram removeTelegram)
Diese Methode gibt alle Ressourcen eines Telegramms wieder frei, da es versendet wurde. Es wird die DatenBlockNummer und ein Semaphore freigegeben.

Parameters:
removeTelegram - Telegramm, das verschickt wurde