public class StreamMultiplexer extends Object
Modifier and Type | Class and Description |
---|---|
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.
|
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
StreamMultiplexer(int numberOfStreams,
int blockingFactor,
int bufferSizeStreamMultiplexer,
int serializerVersion,
StreamMultiplexerDirector director) |
Modifier and Type | Method and Description |
---|---|
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.
|
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
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
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 sollenpublic 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()