anon.transport.connection
Class SkypeConnection

java.lang.Object
  extended by anon.transport.connection.SkypeConnection
All Implemented Interfaces:
IChunkConnection, IConnection

public class SkypeConnection
extends java.lang.Object
implements IChunkConnection

Implementierung einer Chunk basierten Verbindung, welche Skype fuer den Transport der Daten verwendet.

Aenderungen des internen Zustandes (offen, geschlossen) von aussen, sprich durch Skype oder den Kommunikationspartner werden wahrgenommen und entsprechend ausgewertet (@see m_listner).


Nested Class Summary
private static class SkypeConnection.SkypeReader
          Umsetzung eines IChunkReader welcher speziell auf die Eigenheiten der Skype Verbindung zugeschnitten ist.
private static class SkypeConnection.SkypeWriter
          Umsetzung eines IChunkWriter welcher speziell auf die Eigenheiten der Skype Verbindung zugeschnitten ist.
 
Field Summary
static int IDLE_TIME_OUT
          Das inaktivitaets Time Out, nach welchem zu erwarten ist, das eine Verbindung zwangsweise geschlossen wird.
private  Application m_application
          Das ApplicationsObject welches mit dem uebergebene Steam Verbunden ist
private  Stream m_appStream
          Das Stream Object, welches die Basis der verbindung Bildet
private  ApplicationListener m_listner
          Der Listner fuer Veraenderungen an dem Zustand der Verbindung, sofern diese von aussen (Skype, RemoteEnd) ausgeloesst werden.
private  SkypeAddress m_localAddress
          Die Adresse des lokalen Endunktes der Verbindung
private  SkypeConnection.SkypeReader m_reader
          Der Reader fuer die Verbindung.
private  SkypeAddress m_remoteAddress
          Die Adresse des entfernten Endpunktes des Verbindung
private  int m_state
          Der interne Zustand der Verbindung.
private  SkypeConnection.SkypeWriter m_writer
          Der Writer der Verbindung
 
Fields inherited from interface anon.transport.connection.IConnection
ConnectionState_CLOSE, ConnectionState_OPEN
 
Constructor Summary
SkypeConnection(Stream a_appStream)
          Erstellt eine neue Verbindung auf Basis eines bereits offenen Skype Streams.
 
Method Summary
 void close()
          Schliesst die Verbindung, indem der Listner entfernt wird und Reader und Writer geschlossen werden.
 void close(boolean a_disconnectStream)
          Schliesst die Verbindung, indem der Listner entfernt wird und Reader und Writer geschlossen werden.
 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()
          Da Skype nicht das setzen eines TimeOut unterstuetzt, wird entsprechend ein unendliches TimeOut mit der Verbindung verknuepft.
 void setTimeout(int value)
          Wirft immer eine UnsuportedCommandException, da Skype keine Unterstuetzung fuer Timeout besitzt.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IDLE_TIME_OUT

public static final int IDLE_TIME_OUT
Das inaktivitaets Time Out, nach welchem zu erwarten ist, das eine Verbindung zwangsweise geschlossen wird.

See Also:
https://developer.skype.com/Docs/ApiDoc/Application_to_application_commands, Constant Field Values

m_reader

private final SkypeConnection.SkypeReader m_reader
Der Reader fuer die Verbindung.


m_writer

private final SkypeConnection.SkypeWriter m_writer
Der Writer der Verbindung


m_localAddress

private final SkypeAddress m_localAddress
Die Adresse des lokalen Endunktes der Verbindung


m_remoteAddress

private final SkypeAddress m_remoteAddress
Die Adresse des entfernten Endpunktes des Verbindung


m_application

private final Application m_application
Das ApplicationsObject welches mit dem uebergebene Steam Verbunden ist


m_appStream

private final Stream m_appStream
Das Stream Object, welches die Basis der verbindung Bildet


m_state

private int m_state
Der interne Zustand der Verbindung.


m_listner

private ApplicationListener m_listner
Der Listner fuer Veraenderungen an dem Zustand der Verbindung, sofern diese von aussen (Skype, RemoteEnd) ausgeloesst werden.

Constructor Detail

SkypeConnection

public SkypeConnection(Stream a_appStream)
Erstellt eine neue Verbindung auf Basis eines bereits offenen Skype Streams.

Adresse des lokalen und entfernten Endpunktes werden dynamisch bestimmt und Instanzen von Reade und Writer initalisiert.

Parameters:
a_appStream - Der Stream welcher als Basis der Verbindung agiert.
Method Detail

getChunkReader

public IChunkReader getChunkReader()
Description copied from interface: IChunkConnection
Liefert den IChunkReader, ueber welchen gesendete Datenbloecke des Kommunikationspartners gelesen werden koennen.

Specified by:
getChunkReader in interface IChunkConnection

getChunkWriter

public IChunkWriter getChunkWriter()
Description copied from interface: IChunkConnection
Liefert den IChunkWriter, ueber welchen Datenbloecke zum Kommunikationspartner gesendet werden koennen.

Specified by:
getChunkWriter in interface IChunkConnection

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

getTimeout

public int getTimeout()
               throws ConnectionException
Da Skype nicht das setzen eines TimeOut unterstuetzt, wird entsprechend ein unendliches TimeOut mit der Verbindung verknuepft.

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

setTimeout

public void setTimeout(int value)
                throws ConnectionException
Wirft immer eine UnsuportedCommandException, da Skype keine Unterstuetzung fuer Timeout besitzt.

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(boolean a_disconnectStream)
           throws java.io.IOException
Schliesst die Verbindung, indem der Listner entfernt wird und Reader und Writer geschlossen werden.

Gegebenfalls wird noch versucht den Stream zu schliessen.

Parameters:
a_disconnectStream - Gibt an ob auch Versucht werden soll den Stream zu schliessen.
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Schliesst die Verbindung, indem der Listner entfernt wird und Reader und Writer geschlossen werden.

Es wird auf jeden Fall versucht den Stream zu schliessen.

Specified by:
close in interface IConnection
Throws:
java.io.IOException