private static final class Osi7LongTelegramSegment.SenderReceiverCombination
extends java.lang.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. .
Modifier and Type | Field and Description |
---|---|
private java.util.LinkedList<java.lang.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 and Description |
---|
SenderReceiverCombination(int nodeNumberSender,
Osi7LongTelegramSegment.SenderThread sender,
int nodeNumberReceiver) |
Modifier and Type | Method and Description |
---|---|
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.
|
final int _nodeNumberSender
Wird in jedem Telegramm mitgeschickt
final int _numberOfParallelSendTelegrams
Telegramme, die gleichzeitig verschickt werden dürfen
final int _nodeNumberReceiver
Wird jedem Telegrammobjekt mitgegeben und wird benötigt um an dieses Objekt über eine Map zu kommen
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.
private final java.util.LinkedList<java.lang.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.
private final Osi7LongTelegramSegment.SenderThread _sender
Verschickt das Telegramm
public SenderReceiverCombination(int nodeNumberSender, Osi7LongTelegramSegment.SenderThread sender, int nodeNumberReceiver)
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
longTelegram
- Lang-Telegramm, das verschickt werden sollpublic 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.
removeTelegram
- Telegramm, das verschickt wurde