|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.sys.funclib.communicationStreams.StreamDemultiplexer
public class StreamDemultiplexer
Diese Klasse empfängt Nutzdatenpakete, die vom StreamMultiplexer über Streams versandt wurden. Dabei werden die Daten in streams aufgeteilt. Jeder stream stellt dabei der Applikation Nutzdaten zur Verfügung, die sie mit einer Methode abrufen kann. Der StreamMultiplexer wird benachrichtigt falls die Applikation Nutzdaten benötigt. Dieser sorgt dann dafür, dass neue Daten auf dem dafür vorgesehenen Stream bereitgestellt werden. Das Speichern der Nutzdaten geschieht in einem Puffer, unterschreitet die Anzahl der vorgehaltenen Daten einen bestimmten Wert, so fordert der StreamDemultiplexer neue Nutzdaten vom StreamMultiplexer an. Dies gewährleistet einen ständigen Vorrat von Nutzdaten, auf die die Applikation zugreifen kann.
Constructor Summary | |
---|---|
StreamDemultiplexer(int numberOfStreams,
int blockingFactor,
StreamDemultiplexerDirector director)
|
Method Summary | |
---|---|
void |
abort(int indexOfStream)
Eine Methode zum beenden eines Streams. |
void |
killAllStreams()
Die physische Verbindung zum Sender ist zusammengebrochen und alle Streams werden beendet. |
void |
receivedDataFromSender(byte[] streamDataPacket)
Ein streamDataPacket, das der Multiplexer verschickt hat, wird entgegen genommen. |
byte[] |
take(int indexOfStream)
Diese Methode gibt die Nutzdaten eines bestimmten Streams an die Empfängerapplikation zurück. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public StreamDemultiplexer(int numberOfStreams, int blockingFactor, StreamDemultiplexerDirector director)
numberOfStreams
- Anzahl von Streams, die Datenpakete versenden sollenblockingFactor
- Puffer des Empfängers (dieser Wert muß größer gleich 1 sein)director
- Schnittstelle, die eine Methode zum verschicken von Informationen an den Sender bereitstellt
(siehe Interface Beschreibung)
IllegalArgumentException
- Der blockingFactor war kleiner als 1Method Detail |
---|
public void abort(int indexOfStream)
indexOfStream
- Index des Streams, der beendet werden sollpublic byte[] take(int indexOfStream) throws InterruptedException, IllegalStateException, ProtocolException, ClosedChannelException
indexOfStream
- Eindeutiger Index des Streams, der Daten zurückgeben soll
InterruptedException
- Ein Thread, der Nutzdaten mit take anfordert hat, wird mit Interrupt abgebrochen.
IllegalStateException
- Ein Stream wurde mit abort durch die Empfängerapplikation beendet und anschließend
führte die Empfängerapplikation erneut ein take auf diesen Stream aus.
ProtocolException
- Es wurde ein Paket mit einem falschen Index bearbeitet. Das deutet darauf hin, dass
das Paket entweder schon einmal empfangen wurde (doppelt vorhanden) oder das ein
Paket fehlt. Der Stream wird automatisch abgebrochen. Die Applikation kann weiter
"take" aufrufen, wird aber immer für diesen Stream, diese Exception bekommen.
ClosedChannelException
- Die physische Verbindung zum Sender wurde unterbrochen. Jeder take Aufruf wird für
alle Streams diese Exception ausgeben, da alle Streams betroffen sindpublic void receivedDataFromSender(byte[] streamDataPacket) throws IOException
streamDataPacket
- Ein Byte-Array in dem verschlüsselt der Index des Streams, der Index des Pakets, die Größe
des Byte-Arrays in dem die Nutzdaten gespeichert sind und die Nutzdaten selber stehen.
IOException
- Es ist ein Fehler beim deserialisieren der Daten aufgetretenpublic void killAllStreams()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |