Skip navigation links

Package de.bsvrz.sys.funclib.communicationStreams

Dieses Paket ermöglicht den streambasierten Versand von beliebigen Daten zwischen zwei Kommunikationspartnern.

See: Description

Package de.bsvrz.sys.funclib.communicationStreams Description

Dieses Paket ermöglicht den streambasierten Versand von beliebigen Daten zwischen zwei Kommunikationspartnern.
Damit diese Aufgabe erledigt werden kann, müssen zwei Interfaces (StreamDemultiplexerDirector, StreamMultiplexerDirector)
implementiert werden.

Der erste Kommunikationspartner ist die Sendeapplikation, diese stellt Nutzdaten zur Verfügung.
Der zweite Kommunikationspartner ist die Empfängerapplikation, diese fordert die Nutzdaten an um sie zu verarbeiten.

Die Sendeapplikation erzeugt einen StreamMultiplexer um ihre Nutzdaten verschicken zu können. Die
Empfängerapplikation wird einen StreamDemultiplexer erzeugen um die Nutzdaten empfangen zu können.

Der StreamMultiplexer übernimmt die Aufgabe des Senders. Er verschickt sogenannte Nutzdatenpakete an den
StreamDemultiplexer. Der StreamDemultiplexer ist der Empfänger der Nutzdatenpakete. Ein Nutzdatenaket
besteht aus den Nutzdaten und zusätzlichen Steuerungsinformationen. Die Nutzdaten sind die Daten, die
eigentlich versandt und weiter verarbeitet werden sollen.

Die Nutzdaten werden also mit dem StreamMultiplexer verschickt, dieser bekommt die Nutzdaten von der Sendeapplikation.
Der StreamMultiplexer hat über das Interface StreamMultiplexerDirector Zugriff auf die Sendeapplikation
und kann Nutzdaten anfordern.

Auf der Gegenseite kann die Empfängerapplikation den StreamDemultiplexer auffordern Nutzdaten bereitzustellen.

Der StreamDemultiplexer speichert(puffert) eingehende Nutzdatenpakete, aus diesem Puffer werden Anforderungen
an die Empfängerapplikation bedient.
Der Puffer des StreamDemultiplexer wird durch den StreamMultiplexer gefüllt, damit der StreamMultiplexer (Sender) den
StreamDemultiplexer (Empfänger) nicht überlastet findet eine Flusskontrolle statt.

Der Sender darf also nicht unkontrolliert Nutzdaten verschicken, sondern der Empfänger muss ihm eine Erlaubnis geben
neue Nutzdatenpakete zu verschicken. Diese Erlaubnis wird "Ticket" genannt.
Der Sender darf den Puffer des Empfängers nur bis zu einer gewissen Grad füllen (deblockingFactor). Somit sagt der
Empfänger dem Sender wie viele Pakete er verschicken darf, ist dieses Limit erreicht, stoppt der Sender bis ihm der
Empfänger wieder ein Ticket schickt.
Der Sender verschickt die Nutzdatenpakete nicht einzeln sondern verpackt diese in größere Pakete.
Die Größe des Senderpuffers kann ebenfalls eingestellt werden.

Die gerade geschilderte Kommunikation bestand nur aus einem Stream. In der Realität entscheiden sich die
Empfangs/Sendeapplikation vorher über wie viele Stream sie kommunizieren möchten. Der Empfänger stellt dann
für jeden Stream einen Puffer zur Verfügung und der Sender sendet auf jedem Stream Nutzdatenpackete.

Die Empfangsapplikation entscheidet dann, von welchem Stream sie Nutzdaten anfordern möchte.

Skip navigation links