|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.sys.funclib.communicationStreams.StreamMultiplexer
public class StreamMultiplexer
Diese Klasse verschickt Nutzdatenpakete mit Streams an einen StreamDemultiplexer. Die Applikation, die ein Objekt dieser Klasse erzeugt hat, stellt ihrerseits Nutzdaten für jeden Stream zur Verfügung. Auf der Gegenseite kann der StreamDemultiplexer Nutzdaten auf jedem Stream anfordern und verarbeiten. Der StreamMultiplexer sendet seinerseits nur dann Nutzdatenpakete, wenn ihn der StreamDemultiplexer dazu auffordert. Die Nutzdaten werden auch erst dann erzeugt, wenn diese verschickt werden sollen. Der StreamMultiplexer verschickt die Nutzdatenpakete nicht einzeln, sondern bündelt diese in einem großen Paket. Diese großen Pakete werden dann vom StreamDemultiplexer entgegen genommen und ausgepackt. Diese Bündelung findet für jeden Stream einzeln statt, in jedem großen Paket befinden sich also nur Nutzdaten für diesen einen Stream, nicht die Nutzdaten anderer Streams.
Nested Class Summary | |
---|---|
private static class |
StreamMultiplexer.IndexOfStreamAndMaxSendPackets
Diese Klasse erzeugt ein Objekt für die Warteschlange "_queueWithStreamsPermitedToSendData". |
private static class |
StreamMultiplexer.MultiplexerStreaminformations
Diese Objekt beinhaltet alle Informationen, die für einen Stream, auf Senderseiteseite, wichtig sind. |
Field Summary | |
---|---|
private int |
_blockingFactor
Der blockingFactor bestimmt die Größe des Empfangspuffers. |
private int |
_bufferSizeStream
Diese Variable bestimmt die Größe des Puffers, den jeder Stream zur Verfügung hat. |
private int |
_bufferSizeStreamMultiplexer
Diese Variable bestimmt die gesamte Größe des Puffers, der zum StreamMultiplexer gehört. |
private static Debug |
_debug
|
private StreamMultiplexerDirector |
_director
Objekt, das das Anfordern von Daten (von der Applikation) und versenden von Datenpaketen an den Empfänger ermöglicht |
private int |
_numberOfFalseMaxTickets
|
private int |
_numberOfPacketsSend
|
private int |
_numberOfStreams
Anzahl der Streams auf denen Nutzdatenpakete verschickt werden können |
private int |
_numberTerminatedStreams
Anzahl der Streams, die mit "Abort" abgebrochen wurden oder die ein Nutzdatenpaket verschickt haben, in dem die Nutzdaten null waren. |
private UnboundedQueue |
_queueWithStreamsPermitedToSendData
Eine Warteschlange, in ihr werden alle Streams gespeichert, die Nutzdatenpakete verschicken können. |
private int |
_serializerVersion
Mit dieser Version wird der Serializer Nutzdaten verpacken und der Deserializer Tickets auspacken. |
private StreamMultiplexer.MultiplexerStreaminformations[] |
_streams
In diesem Array werden alle Informationen aller Streams gespeichert. |
Constructor Summary | |
---|---|
StreamMultiplexer(int numberOfStreams,
int blockingFactor,
int bufferSizeStreamMultiplexer,
int serializerVersion,
StreamMultiplexerDirector director)
|
Method Summary | |
---|---|
void |
killAllStreams()
Alle Streams werden beendet, da die Verbindung zum Empfänger unterbrochen wurde. |
private void |
printDebugVariables()
|
void |
sendAllStreamData()
Diese Methode verschickt Nutzdaten, die die Senderapplikation erzeugt hat, an den Empfänger (StreamDemultiplexer). |
private void |
sendDataToReceiver(int indexOfStream,
int streamPacketIndex,
byte[] data)
Diese Methode verschickt die Nutzdaten über einen bestimmten Stream an den Empfänger. |
void |
setMaximumStreamTicketIndexForStream(byte[] streamTicketPacket)
Diese Methode setzt den "maximumStreamTicketIndex" eines Streams herauf. |
private byte[] |
take(int indexOfStream)
Diese Methode fordert von einer Application, auf einem bestimmten Stream, neue Nutzdaten an. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final int _blockingFactor
private final int _bufferSizeStreamMultiplexer
private final int _bufferSizeStream
_bufferSizeStreamMultiplexer /_numberOfStreams
gesetzt.
private final UnboundedQueue _queueWithStreamsPermitedToSendData
private final int _numberOfStreams
private int _numberTerminatedStreams
null
waren.
private final StreamMultiplexer.MultiplexerStreaminformations[] _streams
private final StreamMultiplexerDirector _director
private final int _serializerVersion
private int _numberOfPacketsSend
private int _numberOfFalseMaxTickets
private static Debug _debug
Constructor Detail |
---|
public StreamMultiplexer(int numberOfStreams, int blockingFactor, int bufferSizeStreamMultiplexer, int serializerVersion, StreamMultiplexerDirector director)
numberOfStreams
- Anzahl von Streams, die Datenpakete versenden sollenblockingFactor
- Anzahl der Pakete, die initial am Anfang versendet werdenbufferSizeStreamMultiplexer
- Diese Variable bestimmt die gesamte Größe des Puffers, der zum StreamMultiplexer
gehörtserializerVersion
- Diese Variable legt die Versionsnummer des Deserializer/Serializer fest, der
benutzt wird. Sowohl der StreamMultiplexer als auch der StreamDemultiplexer
müssen die selbe Version benutzendirector
- Schnittstelle, die eine Methode zum verschicken von Informationen an den Sender
bereitstellt (siehe Interface Beschreibung)Serializer
,
Deserializer
Method Detail |
---|
private void sendDataToReceiver(int indexOfStream, int streamPacketIndex, byte[] data)
indexOfStream
- : Der eindeutige Index des Streams auf dem gesendet werden sollstreamPacketIndex
- : Jedes Datenpacket bekommt eine laufende Nummerdata
- : Nutzdaten, die versendet werden sollenprivate byte[] take(int indexOfStream)
indexOfStream
- Index des Streams, auf dem neue Daten angefordert werden sollen
public void sendAllStreamData() throws InterruptedException
InterruptedException
- Ein Thread, der auf ein Objekt in der Warteschlange gewartet hat, wurde mit Interrupt
unterbrochen.public void setMaximumStreamTicketIndexForStream(byte[] streamTicketPacket) throws IOException
streamTicketPacket
- Dieses Byte-Array enthält verschlüsselt den Index des Streams und den maximalen Index, bis
zu dem der StreamMultiplexer senden darf.
IOException
- Ein Fehler beim deserialisieren von Datenpublic void killAllStreams()
private void printDebugVariables()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |