anon.transport.connection
Class SkypeConnection.SkypeReader

java.lang.Object
  extended by anon.transport.connection.SkypeConnection.SkypeReader
All Implemented Interfaces:
IChunkReader
Enclosing class:
SkypeConnection

private static class SkypeConnection.SkypeReader
extends java.lang.Object
implements IChunkReader

Umsetzung eines IChunkReader welcher speziell auf die Eigenheiten der Skype Verbindung zugeschnitten ist.

Da weder Skype noch Skype4Java einen gepufferten Empfang von Nachrichen unterstuetzen, erzeugt die Implementierung intern eine Instanz eines QueuedChunkReader um diesen asynchron von Skype fuellen zulassen.


Field Summary
private  Stream m_appStream
          Das Skype Stream Object, welches den Kanal ueber Skype repraesentiert.
private  QueuedChunkReader m_baseReader
          Der eigentliche Reader, welcher den gepufferten Empfang und die Auslieferung von Chunks umsetzt.
private  StreamListener m_listner
          Der Listner fuer ankommende Nachrichten
private  ObjectQueue m_readBuffer
          Der Empfangspuffer
static int MAX_MESSAGE_LENGTH
          Die maximal Laenge einer Nachricht, wie sie ueber Skype verschickt werden darf.
 
Constructor Summary
SkypeConnection.SkypeReader(Stream a_appStream)
          Erstellt einen neuen reader auf Basis des uebergeben Skype Stream
 
Method Summary
 int availableChunks()
          Gibt aufschluss darueber, wieviele Chunks gelesen werden koennen, ohne das der Aufruf von IChunkReader.readChunk() blockiert.
 void close()
          Entfernt den Listener und schliesst den internen Reader.
 byte[] readChunk()
          Gibt den aeltesten (im Sinne des Einfuegens in den Kanal) der im Kanal befindlichen Chunks zurueck.
 void tearDown()
          Entfernt den Listener und faehrt den internen Reader runter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_MESSAGE_LENGTH

public static final int MAX_MESSAGE_LENGTH
Die maximal Laenge einer Nachricht, wie sie ueber Skype verschickt werden darf.

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

m_readBuffer

private ObjectQueue m_readBuffer
Der Empfangspuffer


m_appStream

private Stream m_appStream
Das Skype Stream Object, welches den Kanal ueber Skype repraesentiert.


m_listner

private StreamListener m_listner
Der Listner fuer ankommende Nachrichten


m_baseReader

private QueuedChunkReader m_baseReader
Der eigentliche Reader, welcher den gepufferten Empfang und die Auslieferung von Chunks umsetzt.

Constructor Detail

SkypeConnection.SkypeReader

public SkypeConnection.SkypeReader(Stream a_appStream)
Erstellt einen neuen reader auf Basis des uebergeben Skype Stream

Parameters:
a_appStream - Der Skype Strom, welcher als Datenkanal genutzt werden soll.
Method Detail

availableChunks

public int availableChunks()
                    throws ConnectionException
Description copied from interface: IChunkReader
Gibt aufschluss darueber, wieviele Chunks gelesen werden koennen, ohne das der Aufruf von IChunkReader.readChunk() blockiert.

Der Wert dieser Methode sollte nicht schrumpfen, sofern kein lesender Zugriff auf den Kanal erfolgt.

Specified by:
availableChunks in interface IChunkReader
Throws:
ConnectionException

readChunk

public byte[] readChunk()
                 throws ConnectionException
Description copied from interface: IChunkReader
Gibt den aeltesten (im Sinne des Einfuegens in den Kanal) der im Kanal befindlichen Chunks zurueck. Sofern der Kanal leer ist blockiert der Aufruf bis ein Chunk ausgeliefert werden kann.

Evtl. Fehler oder unzulaessige Zustaende des Kanals koennen durch entsprechende Ausnahmen angezeigt werden.

Specified by:
readChunk in interface IChunkReader
Returns:
Den aeltesten Chunk innerhalb des Kanals. Ein Rueckgabewert von null ist nicht zulaessig und ein Rueckgabewert von byte[0] sollte vermieden werden.
Throws:
ConnectionException

close

public void close()
           throws java.io.IOException
Entfernt den Listener und schliesst den internen Reader. Der Stream beleibt allerdings unberuehrt, da dieser die komplette Verbindung repraesentiert.

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

tearDown

public void tearDown()
              throws java.io.IOException
Entfernt den Listener und faehrt den internen Reader runter. Der Stream beleibt allerdings unberuehrt, da dieser die komplette Verbindung repraesentiert.

Throws:
java.io.IOException