de.bsvrz.sys.funclib.communicationStreams
Class StreamMultiplexer.MultiplexerStreaminformations

java.lang.Object
  extended by de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexer.MultiplexerStreaminformations
Enclosing class:
StreamMultiplexer

private static class StreamMultiplexer.MultiplexerStreaminformations
extends Object

Diese Objekt beinhaltet alle Informationen, die für einen Stream, auf Senderseiteseite, wichtig sind. Diese Objekte werden in einem Array (Index des Arrays ist dabei gleich der Nummer des Stream) gespeichert. Somit können alle Inforamtionen zu einem Stream mit einem Arrayzugriff geholt werden.

See Also:
StreamMultiplexer._streams

Field Summary
private  int _currentStreamPacketIndex
          Der aktuelle Index bis zu dem Pakete verschickt wurden
private  StreamMultiplexerDirector _director
           
private  int _maxStreamPacketIndex
          Bis zu welchem Paketindex darf der Sender Pakete versenden
private  boolean _streamTerminated
          Wenn ein Stream abgebrochen wurde (mit abort des Empfängers oder take liefert null oder killAllStreams ), dann wird dieser boolean true.
 
Constructor Summary
StreamMultiplexer.MultiplexerStreaminformations(int deblockingFactor, StreamMultiplexerDirector director)
          Beim erzeugen des Objekts wird sofort festgelegt, wie viele Nutzdatenpakete vom Sender beim ersten Senden verschickt werden (deblockingFactor viele).
 
Method Summary
 int getCurrentStreamPacketIndex()
           
 int getMaxStreamPacketIndex()
           
 boolean isStreamTerminated()
          Wenn der Stream keine Nutzdaten mehr verschicken darf, dann wird true zurück gegeben.
 void setCurrentStreamPacketIndex(int currentStreamPacketIndex)
           
 void setMaxStreamPacketIndex(int maxStreamPacketIndex)
           
 void setStreamFinished()
          Der Stream darf keine Daten mehr senden.
 void setStreamTerminated(int indexOfStream)
          Der Stream darf keine Daten mehr senden.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_maxStreamPacketIndex

private int _maxStreamPacketIndex
Bis zu welchem Paketindex darf der Sender Pakete versenden


_currentStreamPacketIndex

private int _currentStreamPacketIndex
Der aktuelle Index bis zu dem Pakete verschickt wurden


_streamTerminated

private boolean _streamTerminated
Wenn ein Stream abgebrochen wurde (mit abort des Empfängers oder take liefert null oder killAllStreams ), dann wird dieser boolean true. Streng genommen müßte man die Fälle trennen, aber das bringt keinen Informationsgewinn, darum findet keine Trennung statt. (Jede Abfrage ob _streamTerminated == true müßte um eine Variable, ob der Stream "normal" beendet wurde oder der Senderapplikation kill verwendet hat, erweitert werden)


_director

private final StreamMultiplexerDirector _director
Constructor Detail

StreamMultiplexer.MultiplexerStreaminformations

public StreamMultiplexer.MultiplexerStreaminformations(int deblockingFactor,
                                                       StreamMultiplexerDirector director)
Beim erzeugen des Objekts wird sofort festgelegt, wie viele Nutzdatenpakete vom Sender beim ersten Senden verschickt werden (deblockingFactor viele). Darum wird der deblockngFactor beim erzeugen mit gegeben.

Parameters:
deblockingFactor - Wie viele Pakete werden beim initialen Senden durch den StreamMultiplexer verschickt
director - Ein Stream kann mit diesem Objekt anzeigen das er abgebrochen wurde. Somit müssen keine weiteren Nutzdatenpakete, die mit take angefordert werden, bereitgestellt werden.
Method Detail

getMaxStreamPacketIndex

public int getMaxStreamPacketIndex()

setMaxStreamPacketIndex

public void setMaxStreamPacketIndex(int maxStreamPacketIndex)

getCurrentStreamPacketIndex

public int getCurrentStreamPacketIndex()

setCurrentStreamPacketIndex

public void setCurrentStreamPacketIndex(int currentStreamPacketIndex)

isStreamTerminated

public boolean isStreamTerminated()
Wenn der Stream keine Nutzdaten mehr verschicken darf, dann wird true zurück gegeben.

Returns:
true, wenn der Stream keine Nutzdaten mehr senden darf. false, wenn er noch Nutzdaten verschicken darf.

setStreamFinished

public void setStreamFinished()
Der Stream darf keine Daten mehr senden. Alle Informationen über den Stream stehen allerdings weiterhin zur Verfügung (_streamTerminated wird noch benötigt, der Rest kann für Debug benutzt werden). Die Methode "isStreamTerminated" liefert nach Aufruf der Methode den Wert "true" zurück.

Diese Methode wird aufgerufen, sobald das Null-Paket bei einem take Aufruf zurückgegeben wird.


setStreamTerminated

public void setStreamTerminated(int indexOfStream)
Der Stream darf keine Daten mehr senden. Alle Informationen über den Stream stehen allerdings weiterhin zur Verfügung (_streamTerminated wird noch benötigt, der Rest kann für Debug benutzt werden). Die Methode "isStreamTerminated" liefert nach Aufruf der Methode den Wert "true" zurück.

Diese Methode wird aufgerufen, sobald der Stream ein abort vom StreamDemultiplexer empfängt oder die Methode killAllStreams des StreamMultiplexer wird aufgerufen. Bei Aufruf dieser Methode wird das Objekt, das den StreamMultiplexerDirector implementiert, benachrichtigt das es keine weiteren Nutzdatenpakete für den Stream bereithalten muss.

Wurde der Stream bereits mit setStreamFinished beendet, bewirkt dieser Methodenaufruf nichts.