anon.transport.connection
Class SocketConnection

java.lang.Object
  extended by anon.transport.connection.SocketConnection
All Implemented Interfaces:
IConnection, IStreamConnection

public class SocketConnection
extends java.lang.Object
implements IStreamConnection

Adaptiert ein Socket um es im Sinne einer IStreamConnection zu verwenden. Da Ein- und Ausgabestrom nur als Paar auftreten und fester Bestandteil der IStreamConnection sind, wird bereits waehrend der Initlisierung versucht den Ein- und Ausgabestrom des Sockets zu bekommen. Sollte dies nicht moeglich sein, wird die Verbindung bereits zu begin als geschlossen markiert. Deswegen ist es wichtig SocketConnection nur in Verbindung mit offenen und verbunden Sockets zu verwenden. Ausserdem wird angennomme das sich Ein- und Ausgabestrom des Sockets nicht aendern.


Field Summary
private  java.io.InputStream m_inputStream
          Der Eingabstrom der Verbindung.
private  int m_internalState
          Der interne Zustand der Verbindung.
private  IAddress m_localAddress
          Die Adresse des lokalen Endpunktes
private  java.io.OutputStream m_outputStream
          Der Ausgabestrom der Verbindung.
private  IAddress m_remoteAddress
          Die Adresse des entfernten Endpunktes
private  java.net.Socket m_underlyingSocket
          Das Socket auf welchem die Verbindung aufbaut
 
Fields inherited from interface anon.transport.connection.IConnection
ConnectionState_CLOSE, ConnectionState_OPEN
 
Constructor Summary
SocketConnection(java.net.Socket a_underlyingSocket)
          Erstellt eine neue SocketConnection auf Basis des uebergebenen Sockets.
 
Method Summary
 void close()
           
 int getCurrentState()
          Gibt den momentanen Zustand der Verbindung an.
 java.io.InputStream getInputStream()
          Liefert den Eingabestrom der Verbinundung, ueber welchen kontinuierlich Daten empfangen werden koennen.
 IAddress getLocalAddress()
          Gibt die Adresse des lokalen Endpunkt der Verbindung an.
 java.io.OutputStream getOutputStream()
          Liefert den Ausgabestrom der verbindung, ueber welchem Daten gesendet werden koennen.
 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.
private  void setCLOSE()
          Interne Hilfsfunktion, welche beim Wechsel in den CLOSE-Zustand augerufen, werden sollte.
 void setTimeout(int value)
          Setzt den Timeout in Millisekunden fuer die Lese- und Schreiboperationen der Verbindung.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_underlyingSocket

private java.net.Socket m_underlyingSocket
Das Socket auf welchem die Verbindung aufbaut


m_outputStream

private java.io.OutputStream m_outputStream
Der Ausgabestrom der Verbindung. Bleibt ueber einen Zustand hinweg konstant.


m_inputStream

private java.io.InputStream m_inputStream
Der Eingabstrom der Verbindung. Bleibt ebenfalls konstant.


m_internalState

private int m_internalState
Der interne Zustand der Verbindung.


m_localAddress

private IAddress m_localAddress
Die Adresse des lokalen Endpunktes


m_remoteAddress

private IAddress m_remoteAddress
Die Adresse des entfernten Endpunktes

Constructor Detail

SocketConnection

public SocketConnection(java.net.Socket a_underlyingSocket)
Erstellt eine neue SocketConnection auf Basis des uebergebenen Sockets.

Das uebergebene Socket darf nicht geschlossen sein, da im Sinne einer Verbindung, die Kommunikationsbeziehung bereits eingerichtet sein muss.

Parameters:
a_underlyingSocket - Das offene und verbunde Socket, welches als Basis der Verbinung genutzt werden soll
Method Detail

setCLOSE

private void setCLOSE()
Interne Hilfsfunktion, welche beim Wechsel in den CLOSE-Zustand augerufen, werden sollte.


getInputStream

public java.io.InputStream getInputStream()
Description copied from interface: IStreamConnection
Liefert den Eingabestrom der Verbinundung, ueber welchen kontinuierlich Daten empfangen werden koennen. Sofern sich der Zustand der Verbindung nicht aendert, sollte diese Methode immer das selbe Objekt zurueckgeben.

Specified by:
getInputStream in interface IStreamConnection

getOutputStream

public java.io.OutputStream getOutputStream()
Description copied from interface: IStreamConnection
Liefert den Ausgabestrom der verbindung, ueber welchem Daten gesendet werden koennen. Sofern sich der Zustand der Verbindung nicht aendert, sollte diese Methode immer das selbe Objekt zurueckgeben.

Specified by:
getOutputStream in interface IStreamConnection

getTimeout

public int getTimeout()
               throws ConnectionException
Description copied from interface: IConnection
Ermittelt den momentanen Wert fuer das Timeout in Millisekunden fuer Lese- und Schreiboperationen der Verbindung. Der Definition von Socket folgend, bestimmt 0 ein unendliches Timeout.

Specified by:
getTimeout in interface IConnection
Throws:
ConnectionException - Wird geworfen, wenn der Wert nicht ermittelt werden kann.

setTimeout

public void setTimeout(int value)
                throws ConnectionException
Description copied from interface: IConnection
Setzt den Timeout in Millisekunden fuer die Lese- und Schreiboperationen der Verbindung. Der Definition von Socket folgend, bestimmt 0 ein unendliches Timeout.

Specified by:
setTimeout in interface IConnection
Throws:
ConnectionException - Wird geworfen, wenn das setzen des TimeOut nicht moegliche war. Insbesondere kann durch eine UnsuportedCommandException Ausnahme angegben werde, das das setzen generell nicht moeglich ist.

close

public void close()
           throws java.io.IOException
Specified by:
close in interface IConnection
Throws:
java.io.IOException

getCurrentState

public int getCurrentState()
Description copied from interface: IConnection
Gibt den momentanen Zustand der Verbindung an.

Die Belegung sollte dabei den in ConnectionState definierten Konstanten folgen.

Specified by:
getCurrentState in interface IConnection

getLocalAddress

public IAddress getLocalAddress()
Description copied from interface: IConnection
Gibt die Adresse des lokalen Endpunkt der Verbindung an.

Fuer Implentierungen, welche eine Bereits eingerichte Verbindung kapsel um weitere Funktionalitaet bereitzustellen, sollte diese Methode die Adresse der drunterlegenen Verbindung zurueckgeben.

Specified by:
getLocalAddress in interface IConnection

getRemoteAddress

public IAddress getRemoteAddress()
Description copied from interface: IConnection
Gibt die Adresse des entfernten Endpunkt an.

Fuer Implentierungen, welche eine Bereits eingerichte Verbindung kapsel um weitere Funktionalitaet bereitzustellen, sollte diese Methode die Adresse der drunterlegenen Verbindung zurueckgeben.

Specified by:
getRemoteAddress in interface IConnection