public class QueuedChunkConnection extends java.lang.Object implements IChunkConnection
IChunkConnection
, welcher die 2 Kanaele der
bidirektionalen Kommunikation durch zwei BlockingQueue
ueber byte[]
umsetzt.Modifier and Type | Class and Description |
---|---|
private class |
QueuedChunkConnection.QueuedAddress |
Modifier and Type | Field and Description |
---|---|
protected IAddress |
m_localAddress
Die lokale Addresse
|
private QueuedChunkReader |
m_reader
Der reader der Verbindung
|
protected IAddress |
m_remoteAddress
Die Adresse des entfernten Endpunkt
|
private int |
m_state
Der interne Zustand der Verbindung
|
private IChunkWriter |
m_writer
Der Writer der Verbindung
|
ConnectionState_CLOSE, ConnectionState_OPEN
Constructor and Description |
---|
QueuedChunkConnection(ObjectQueue a_loopbackQueue)
Erstellt einen neue
QueuedChunkConnection bei der Ein- und
Ausgabequeue durch die selbe BlockingQueue repraesentiert werden
und die Connection entsprechend mit sich selbst verbunden ist. |
QueuedChunkConnection(ObjectQueue a_readingQueue,
ObjectQueue a_writingQueue)
Erstell eine neue
QueuedChunkConnection , bei welcher Ein- und
Ausgabekanal durch entsprechende BlockingQueue repraesentiert
sind. |
Modifier and Type | Method and Description |
---|---|
void |
close()
Schliesst die Verbindung, indem der interne Zustand auf geschlossen
gesetzt wird.
|
IChunkReader |
getChunkReader()
Liefert den
IChunkReader , ueber welchen gesendete Datenbloecke des
Kommunikationspartners gelesen werden koennen. |
IChunkWriter |
getChunkWriter()
Liefert den
IChunkWriter , ueber welchen Datenbloecke zum
Kommunikationspartner gesendet werden koennen. |
int |
getCurrentState()
Gibt den momentanen Zustand der Verbindung an.
|
IAddress |
getLocalAddress()
Gibt die Adresse des lokalen Endpunkt der Verbindung an.
|
IAddress |
getRemoteAddress()
Gibt die Adresse des entfernten Endpunkt an.
|
int |
getTimeout()
Ermittelt den momentanen Wert fuer das Timeout in Millisekunden fuer Lese-
und Schreiboperationen der Verbindung.
|
void |
setTimeout(int value)
Setzt den Timeout in Millisekunden fuer die Lese- und Schreiboperationen
der Verbindung.
|
private final QueuedChunkReader m_reader
private final IChunkWriter m_writer
private int m_state
protected IAddress m_localAddress
protected IAddress m_remoteAddress
public QueuedChunkConnection(ObjectQueue a_loopbackQueue)
QueuedChunkConnection
bei der Ein- und
Ausgabequeue durch die selbe BlockingQueue
repraesentiert werden
und die Connection entsprechend mit sich selbst verbunden ist.
Die Adresse fuer lokales und entferntes Ende werden auf die selbe Instanz gesetzt und erhalten den Identifier "loopback".
a_loopbackQueue
- Die BlockingQueue welche als Ein- und Ausgabequeue dientpublic QueuedChunkConnection(ObjectQueue a_readingQueue, ObjectQueue a_writingQueue)
QueuedChunkConnection
, bei welcher Ein- und
Ausgabekanal durch entsprechende BlockingQueue
repraesentiert
sind.
Die Adressen des lokalen, wie des entfernten, Endpunktes erhalten den Identifier "queue".
a_readingQueue
- Die Queue, welche als Grundlage der lesenden Operationen der
Verbindung Verwendung findet.a_writingQueue
- Die Queue, welche als Grundlage der schreiben Operationen der
Verbindung Verwendung findet.public IChunkReader getChunkReader()
IChunkConnection
IChunkReader
, ueber welchen gesendete Datenbloecke des
Kommunikationspartners gelesen werden koennen.getChunkReader
in interface IChunkConnection
public IChunkWriter getChunkWriter()
IChunkConnection
IChunkWriter
, ueber welchen Datenbloecke zum
Kommunikationspartner gesendet werden koennen.getChunkWriter
in interface IChunkConnection
public int getCurrentState()
IConnection
Die Belegung sollte dabei den in ConnectionState
definierten
Konstanten folgen.
getCurrentState
in interface IConnection
public IAddress getLocalAddress()
IConnection
Fuer Implementierungen, die eine bereits eingerichtete Verbindung kapseln, um weitere Funktionalitaet bereitzustellen, sollte diese Methode die Adresse der darunter gelegenen Verbindung zurueckgeben.
getLocalAddress
in interface IConnection
public IAddress getRemoteAddress()
IConnection
Fuer Implementierungen, die eine bereits eingerichtete Verbindung kapseln, um weitere Funktionalitaet bereitzustellen, sollte diese Methode die Adresse der darunter gelegenen Verbindung zurueckgeben.
getRemoteAddress
in interface IConnection
public int getTimeout() throws ConnectionException
IConnection
Socket
folgend, bestimmt 0 ein unendliches Timeout.getTimeout
in interface IConnection
ConnectionException
- Wird geworfen, wenn der Wert nicht ermittelt werden kann.public void setTimeout(int value) throws ConnectionException
IConnection
Socket
folgend, bestimmt 0 ein
unendliches Timeout.setTimeout
in interface IConnection
ConnectionException
- Wird geworfen, wenn das setzen des TimeOut nicht moeglich
war. Insbesondere kann durch eine
UnsupportedCommandException
Ausnahme angegeben werden,
dass das setzen generell nicht moeglich ist.public void close() throws java.io.IOException
Da noch Leseoperationen anstehen koennen, wird der Reader nur heruntergefahren um die Leerung der Buffers zu erlauben.
close
in interface IConnection
java.io.IOException
Copyright © 2023. All rights reserved.