private static class StreamMultiplexer.MultiplexerStreaminformations
extends java.lang.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.
StreamMultiplexer._streams
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
MultiplexerStreaminformations(int deblockingFactor,
StreamMultiplexerDirector director)
Beim erzeugen des Objekts wird sofort festgelegt, wie viele Nutzdatenpakete vom Sender beim ersten Senden verschickt werden (deblockingFactor viele).
|
Modifier and Type | Method and Description |
---|---|
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.
|
private int _maxStreamPacketIndex
Bis zu welchem Paketindex darf der Sender Pakete versenden
private int _currentStreamPacketIndex
Der aktuelle Index bis zu dem Pakete verschickt wurden
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)
private final StreamMultiplexerDirector _director
public 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.
deblockingFactor
- Wie viele Pakete werden beim initialen Senden durch den StreamMultiplexer verschicktdirector
- Ein Stream kann mit diesem Objekt anzeigen das er abgebrochen wurde. Somit müssen keine weiteren Nutzdatenpakete, die mit take
angefordert werden, bereitgestellt werden.public int getMaxStreamPacketIndex()
public void setMaxStreamPacketIndex(int maxStreamPacketIndex)
public int getCurrentStreamPacketIndex()
public void setCurrentStreamPacketIndex(int currentStreamPacketIndex)
public boolean isStreamTerminated()
Wenn der Stream keine Nutzdaten mehr verschicken darf, dann wird true zurück gegeben.
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.
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.