schmitzm.io
Class InputBuffer

java.lang.Object
  extended by java.io.InputStream
      extended by schmitzm.io.InputBuffer
All Implemented Interfaces:
Closeable
Direct Known Subclasses:
BinaryInputBuffer

public class InputBuffer
extends InputStream


Diese Klasse wurde urspruenglich 2002/2003 von Martin Schmitz fuer die ADAGIOS-Java-Library (Universitaet Bonn) erstellt, 2009 in das SCHMITZM-Projekt uebernommen und teilweise erweitert.
Diese Klasse stellt einen InputStream dar, der sukzessive Bytes aus einem Buffer liefert. Dieser Buffer kann permanent wieder (auf)gefuellt werden. Dazu muss er nicht erst komplett geleert worden sein!

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
protected  byte[] buffer
           
protected  boolean bufferFull
           
protected  int readPos
           
protected  int writePos
           
 
Constructor Summary
InputBuffer(int byteSize)
          Erzeugt einen neuen InputBuffer.
 
Method Summary
 int available()
          Liefert die Anzahl an Bytes, die (noch) aus dem Buffer gelesen werden koennen.
 int availableSpace()
          Liefert die Anzahl an Bytes, die (noch) in den Buffer geschrieben werden koennen.
 long clear()
          Leert den Buffer.
 int getBufferSize()
           
 byte[] getContent()
          Liefert den aktuellen Inhalt des Buffers als bytes-Array.
protected  int incPosition(int pos)
          Erhoeht die Zeiger-Position im Buffer.
protected  int incPosition(int pos, int hop)
          Erhoeht die Zeiger-Position im Buffer.
 int read()
          Liesst das naechste Byte aus dem Buffer.
 long skip(long n)
          Entfernt eine Anzahl von Bytes aus dem Buffer.
 void write(byte b)
          Schreibt ein Byte in den Buffer.
 void write(byte[] bytes)
          Schreibt eine Reihe von Bytes in den Buffer.
 void write(InputStream input, int len)
          Schreibt eine Reihe von Bytes in den Buffer.
 
Methods inherited from class java.io.InputStream
close, mark, markSupported, read, read, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

buffer

protected byte[] buffer

readPos

protected int readPos

writePos

protected int writePos

bufferFull

protected boolean bufferFull
Constructor Detail

InputBuffer

public InputBuffer(int byteSize)
Erzeugt einen neuen InputBuffer.

Parameters:
byteSize - Groesse des Buffers in Byte
Method Detail

getBufferSize

public int getBufferSize()

incPosition

protected int incPosition(int pos)
Erhoeht die Zeiger-Position im Buffer. Ist das Ende des Buffers erreicht, springt der Zeiger wieder auf die Position 0.


incPosition

protected int incPosition(int pos,
                          int hop)
Erhoeht die Zeiger-Position im Buffer. Ist das Ende des Buffers erreicht, springt der Zeiger wieder nach vorne.

Parameters:
pos - aktuelle Zeiger-Position
hop - Anzahl an Positionen, die vor gerueckt werden sollen

write

public void write(byte b)
Schreibt ein Byte in den Buffer.

Parameters:
b - ein Byte
Throws:
BufferOverflowException - falls der Buffer bereits voll ist

write

public void write(byte[] bytes)
Schreibt eine Reihe von Bytes in den Buffer.

Parameters:
bytes - Menge von zu schreibenen Bytes
Throws:
BufferOverflowException - falls der Buffer bereits voll ist

write

public void write(InputStream input,
                  int len)
           throws IOException
Schreibt eine Reihe von Bytes in den Buffer. Diese Methode blockiert, bis der InputStream die geforderte Anzahl an Bytes liefern kann.

Parameters:
input - Stream aus dem die Bytes gelesen werden
len - Anzahl zu lesender Bytes
Throws:
BufferOverflowException - falls nicht genuegend freier Platz im Buffer ist
IOException - falls das Lesen aus dem Eingabe-Stream scheitert

availableSpace

public int availableSpace()
Liefert die Anzahl an Bytes, die (noch) in den Buffer geschrieben werden koennen.


read

public int read()
         throws IOException
Liesst das naechste Byte aus dem Buffer. Der zurueckgelieferte Wert liegt zwischen 0 und 255.

Specified by:
read in class InputStream
Returns:
-1 falls der Buffer leer ist
Throws:
IOException

available

public int available()
Liefert die Anzahl an Bytes, die (noch) aus dem Buffer gelesen werden koennen.

Overrides:
available in class InputStream

skip

public long skip(long n)
Entfernt eine Anzahl von Bytes aus dem Buffer. Liegen nicht mehr genug Bytes im Buffer, wird dies ignoriert und der Buffer einfach komplett geleert.

Overrides:
skip in class InputStream
Parameters:
n - Anzahl zu entfernender Bytes (muss ein int sein)
Returns:
Anzahl an Bytes, die aus dem Buffer entfernt wurden

clear

public long clear()
Leert den Buffer.

Returns:
Anzahl an Bytes, die noch im Buffer waren

getContent

public byte[] getContent()
Liefert den aktuellen Inhalt des Buffers als bytes-Array.