public class CollectingReceiverManager
extends java.lang.Object
Verwaltet alle CollectingReceiver Objekte für noch angemeldete Receiver der Applikation.
Modifier and Type | Field and Description |
---|---|
private int |
_capacity
Maximale Gesamtkapazität für auszuliefernde Datensätze
|
private static Debug |
_debug
DebugLogger für Debug-Ausgaben
|
private java.util.HashMap<ClientReceiverInterface,CollectingReceiver> |
_receivers
Map, die zu jedem angemeldeten Receiver der Applikation den zugehörigen CollectingReceiver enthält
|
private UnboundedQueue<CollectingReceiver> |
_receiversForDelivery
Queue mit den CollectingReceiver-Objekten, die auszuliefernde Datensätze gespeichert haben
|
private int |
_size
Gesamtgröße der momentan zu Auslieferung an die Applikation zwischengespeicherten Datensätze.
|
Constructor and Description |
---|
CollectingReceiverManager(int capacity) |
Modifier and Type | Method and Description |
---|---|
CollectingReceiver |
addReceiverReference(ClientReceiverInterface receiver)
Nimmt eine neue Referenz zu einem Receiver in die Verwaltung auf.
|
void |
deliverOnce()
Startet die Auslieferung von Datenensätzen des nächsten in der Auslieferungsliste eingetragenen CollectingReceivers.
|
CollectingReceiver |
removeReceiverReference(ClientReceiverInterface receiver)
Freigabe einer Referenz auf einen Receiver.
|
void |
storeForDelivery(CollectingReceiver collectingReceiver,
ResultData result)
Gibt einen an die Applikation auszuliefernden Datensatz an den angegebenen CollectingReceiver weiter und trägt den CollectingReceiver in die Auslieferungsliste ein, falls dies noch nicht geschehen ist.
|
void |
storeForDeliveryWithoutBlocking(CollectingReceiver collectingReceiver,
ResultData result)
Gibt einen an die Applikation auszuliefernden Datensatz an den angegebenen CollectingReceiver weiter und trägt den CollectingReceiver in die Auslieferungsliste ein, falls dies noch nicht geschehen ist.
|
private static final Debug _debug
DebugLogger für Debug-Ausgaben
private final java.util.HashMap<ClientReceiverInterface,CollectingReceiver> _receivers
Map, die zu jedem angemeldeten Receiver der Applikation den zugehörigen CollectingReceiver enthält
private UnboundedQueue<CollectingReceiver> _receiversForDelivery
Queue mit den CollectingReceiver-Objekten, die auszuliefernde Datensätze gespeichert haben
private final int _capacity
Maximale Gesamtkapazität für auszuliefernde Datensätze
private int _size
Gesamtgröße der momentan zu Auslieferung an die Applikation zwischengespeicherten Datensätze.
public CollectingReceiver addReceiverReference(ClientReceiverInterface receiver)
Nimmt eine neue Referenz zu einem Receiver in die Verwaltung auf. Wenn es zum angegebenen Receiver bereits einen zugehörigen CollectingReceiver gab, dann wird dessen Referenzzähler um eins erhöht. Wenn es zum angegebenen Receiver noch keinen CollectingReceiver gab, dann wird ein entsprechender CollectingReceiver erzeugt und dessen Referenzzähler auf eins gesetzt.
receiver
- Receiver der Applikation zur Verarbeitung von empfangenen Datensätzen.public CollectingReceiver removeReceiverReference(ClientReceiverInterface receiver)
Freigabe einer Referenz auf einen Receiver. Beim zugeordneten CollectingReceiver wird der Referenzzähler um eins erniedrigt. Wenn der Referenzzähler den Wert 0 erreicht, dann wird der entsprechende Eintrag für den Receiver entfernt und der zugeordnete CollectingReceiver freigegeben.
receiver
- public void storeForDelivery(CollectingReceiver collectingReceiver, ResultData result) throws java.lang.InterruptedException
Gibt einen an die Applikation auszuliefernden Datensatz an den angegebenen CollectingReceiver weiter und trägt den CollectingReceiver in die Auslieferungsliste ein, falls dies noch nicht geschehen ist. Wenn die maximale Größe des Auslieferungspuffers erreicht wurde, dann blockiert diese Methode, bis die Größe des Auslieferungspuffers wieder unter die Maximalgröße gesunken ist.
collectingReceiver
- CollectingReceiver bei dem der Datensatz zur Auslieferung zwischengespeichert werden soll.result
- Auszuliefernder Datensatz.java.lang.InterruptedException
- Wenn der Thread unterbrochen wurde, während er blockiert war.public void storeForDeliveryWithoutBlocking(CollectingReceiver collectingReceiver, ResultData result)
Gibt einen an die Applikation auszuliefernden Datensatz an den angegebenen CollectingReceiver weiter und trägt den CollectingReceiver in die Auslieferungsliste ein, falls dies noch nicht geschehen ist. Diese Methode blockiert nicht, wenn die maximale Größe des Auslieferungspuffers erreicht wurde.
collectingReceiver
- CollectingReceiver bei dem der Datensatz zur Auslieferung zwischengespeichert werden soll.result
- Auszuliefernder Datensatz.java.lang.InterruptedException
- Wenn der Thread unterbrochen wurde, während er blockiert war.public void deliverOnce() throws java.lang.InterruptedException
Startet die Auslieferung von Datenensätzen des nächsten in der Auslieferungsliste eingetragenen CollectingReceivers.
java.lang.InterruptedException