anon.transport.connection
Class ChunkConnectionAdapter.ChunkInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by anon.transport.connection.ChunkConnectionAdapter.ChunkInputStream
All Implemented Interfaces:
java.io.Closeable
Enclosing class:
ChunkConnectionAdapter

private static class ChunkConnectionAdapter.ChunkInputStream
extends java.io.InputStream

Implentierung eines InputStream, welcher die durch read() zurueckgegeben Bytes aus den einzelnen Chunks eines IChunkReader nimmt.


Field Summary
private  byte[] m_buffer
          Der interne Buffer stellt den zuletzt gelesen Chunk dar und ist die Basis fuer die durch read() zurueckgegeben Byes
private  IChunkReader m_reader
          Der Reader welcher die Chunks und somit die Daten bereitstellt
private  int m_readPos
          Die aktuelle Position innerhalb des Buffer ab welcher Daten zurueckgegeben werden.
private  int m_state
          Der interne Zustand des Streams
 
Constructor Summary
ChunkConnectionAdapter.ChunkInputStream(IChunkReader a_reader)
          Erstellt einen neuen ChunkConnectionAdapter.ChunkInputStream auf Basis des uebergeben Readers
 
Method Summary
 int available()
          Liefert die Anzahl der verbleibenen Bytes innerhalb des Buffers zurueck.
 void close()
          Schliesst den Strom und den zugrundelegenden Reader
 int read()
           
private  void updateBuffer()
          Interne Funktion um den Buffer durch einen neuen Chunk aufzufrischen und gegebenfalls den internen Zustand des Streams anzupassen.
 
Methods inherited from class java.io.InputStream
mark, markSupported, read, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_reader

private IChunkReader m_reader
Der Reader welcher die Chunks und somit die Daten bereitstellt


m_buffer

private byte[] m_buffer
Der interne Buffer stellt den zuletzt gelesen Chunk dar und ist die Basis fuer die durch read() zurueckgegeben Byes


m_readPos

private int m_readPos
Die aktuelle Position innerhalb des Buffer ab welcher Daten zurueckgegeben werden.


m_state

private int m_state
Der interne Zustand des Streams

Constructor Detail

ChunkConnectionAdapter.ChunkInputStream

public ChunkConnectionAdapter.ChunkInputStream(IChunkReader a_reader)
Erstellt einen neuen ChunkConnectionAdapter.ChunkInputStream auf Basis des uebergeben Readers

Parameters:
Der - Reader, welcher die einezelnen Chunks und somit Daten liefert.
Method Detail

read

public int read()
         throws java.io.IOException
Specified by:
read in class java.io.InputStream
Throws:
java.io.IOException

updateBuffer

private void updateBuffer()
                   throws java.io.IOException
Interne Funktion um den Buffer durch einen neuen Chunk aufzufrischen und gegebenfalls den internen Zustand des Streams anzupassen.

Einzige wirklich blockierende Aufruf.

Throws:
java.io.IOException

available

public int available()
              throws java.io.IOException
Liefert die Anzahl der verbleibenen Bytes innerhalb des Buffers zurueck. Sofern der Buffer leer ist und mindestens 1 Chunk aus den Kanal gelesen werden kann, wird der Buffer aufgefrischt und der aktuelle Wert zurueckgegeben.

Overrides:
available in class java.io.InputStream
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Schliesst den Strom und den zugrundelegenden Reader

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException