de.bsvrz.dav.daf.main.impl.subscription
Class CollectingReceiverManager

java.lang.Object
  extended by de.bsvrz.dav.daf.main.impl.subscription.CollectingReceiverManager

public class CollectingReceiverManager
extends Object

Verwaltet alle CollectingReceiver Objekte für noch angemeldete Receiver der Applikation.

Author:
Kappich Systemberatung

Constructor Summary
CollectingReceiverManager(int capacity)
           
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CollectingReceiverManager

public CollectingReceiverManager(int capacity)
Method Detail

addReceiverReference

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.

Parameters:
receiver - Receiver der Applikation zur Verarbeitung von empfangenen Datensätzen.
Returns:
Dem angegebenen Receiver zugeordneter CollectingReceiver.

removeReceiverReference

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.

Parameters:
receiver -
Returns:

storeForDelivery

public void storeForDelivery(CollectingReceiver collectingReceiver,
                             ResultData result)
                      throws 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.

Parameters:
collectingReceiver - CollectingReceiver bei dem der Datensatz zur Auslieferung zwischengespeichert werden soll.
result - Auszuliefernder Datensatz.
Throws:
InterruptedException - Wenn der Thread unterbrochen wurde, während er blockiert war.

storeForDeliveryWithoutBlocking

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.

Parameters:
collectingReceiver - CollectingReceiver bei dem der Datensatz zur Auslieferung zwischengespeichert werden soll.
result - Auszuliefernder Datensatz.
Throws:
InterruptedException - Wenn der Thread unterbrochen wurde, während er blockiert war.

deliverOnce

public void deliverOnce()
                 throws InterruptedException
Startet die Auslieferung von Datenensätzen des nächsten in der Auslieferungsliste eingetragenen CollectingReceivers.

Throws:
InterruptedException