de.jaetzold.art.platform
Class PacketInputStream

java.lang.Object
  |
  +--java.io.InputStream
        |
        +--java.io.FilterInputStream
              |
              +--de.jaetzold.art.platform.PacketInputStream
Direct Known Subclasses:
RCXPacketInputStream

public class PacketInputStream
extends FilterInputStream

Base Class for reading some kind of packets from an InputStream. Packets means a sequence of at least 1 bytes.


Inner Class Summary
static class PacketInputStream.DefaultPacketDataFilter
           
static class PacketInputStream.DefaultPacketHeaderChecker
           
static class PacketInputStream.DefaultPacketTrailerChecker
           
static class PacketInputStream.PacketDataComplementFilter
           
static interface PacketInputStream.PacketDataFilter
           
static interface PacketInputStream.PacketHeaderChecker
           
static interface PacketInputStream.PacketTrailerChecker
           
static class PacketInputStream.PacketTrailerChecksumByteChecker
           
 
Field Summary
protected  int defaultReadTimeout
           
protected  PacketInputStream.PacketDataFilter packetDataFilter
           
protected  PacketInputStream.PacketHeaderChecker packetHeaderChecker
           
protected  PacketInputStream.PacketTrailerChecker packetTrailerChecker
           
protected  int pollingPause
           
 
Fields inherited from class java.io.FilterInputStream
in
 
Constructor Summary
PacketInputStream(InputStream source)
           
PacketInputStream(InputStream source, byte[] header, PacketInputStream.PacketDataFilter data, PacketInputStream.PacketTrailerChecker trailer)
           
PacketInputStream(InputStream source, PacketInputStream.PacketHeaderChecker header, PacketInputStream.PacketDataFilter data, PacketInputStream.PacketTrailerChecker trailer)
           
 
Method Summary
 int available()
          Returns the number of bytes in the input-buffer added to the result of super.available().
 boolean flush()
          Skip forward in the InputStream as far as possible until no bytes are available.
 int getDefaultReadTimeout()
           
 PacketInputStream.PacketDataFilter getPacketDataFilter()
           
 PacketInputStream.PacketHeaderChecker getPacketHeaderChecker()
           
 PacketInputStream.PacketTrailerChecker getPacketTrailerChecker()
           
 int getPollingPause()
           
 byte[] readPacket()
           
 byte[] readPacket(int timeout)
           
 void setDefaultReadTimeout(int defaultReadTimeout)
           
 void setPacketDataFilter(PacketInputStream.PacketDataFilter packetDataFilter)
           
 void setPacketHeaderChecker(PacketInputStream.PacketHeaderChecker packetHeaderChecker)
           
 void setPacketTrailerChecker(PacketInputStream.PacketTrailerChecker packetTrailerChecker)
           
 void setPollingPause(int pollingPause)
           
 long skip(long n)
          Skips over n bytes in the input-buffer.
 
Methods inherited from class java.io.FilterInputStream
close, mark, markSupported, read, read, read, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

packetHeaderChecker

protected PacketInputStream.PacketHeaderChecker packetHeaderChecker

packetDataFilter

protected PacketInputStream.PacketDataFilter packetDataFilter

packetTrailerChecker

protected PacketInputStream.PacketTrailerChecker packetTrailerChecker

defaultReadTimeout

protected int defaultReadTimeout

pollingPause

protected int pollingPause
Constructor Detail

PacketInputStream

public PacketInputStream(InputStream source)

PacketInputStream

public PacketInputStream(InputStream source,
                         byte[] header,
                         PacketInputStream.PacketDataFilter data,
                         PacketInputStream.PacketTrailerChecker trailer)

PacketInputStream

public PacketInputStream(InputStream source,
                         PacketInputStream.PacketHeaderChecker header,
                         PacketInputStream.PacketDataFilter data,
                         PacketInputStream.PacketTrailerChecker trailer)
Method Detail

flush

public boolean flush()
Skip forward in the InputStream as far as possible until no bytes are available. This method will only return if a call to available() to the associated InputStream returns 0 or a value not less than the last time (to prevent this method from running forever). In the latter case the method returns false, true otherwise.

getPacketHeaderChecker

public PacketInputStream.PacketHeaderChecker getPacketHeaderChecker()

setPacketHeaderChecker

public void setPacketHeaderChecker(PacketInputStream.PacketHeaderChecker packetHeaderChecker)

getPacketDataFilter

public PacketInputStream.PacketDataFilter getPacketDataFilter()

setPacketDataFilter

public void setPacketDataFilter(PacketInputStream.PacketDataFilter packetDataFilter)

getPacketTrailerChecker

public PacketInputStream.PacketTrailerChecker getPacketTrailerChecker()

setPacketTrailerChecker

public void setPacketTrailerChecker(PacketInputStream.PacketTrailerChecker packetTrailerChecker)

getDefaultReadTimeout

public int getDefaultReadTimeout()

setDefaultReadTimeout

public void setDefaultReadTimeout(int defaultReadTimeout)

getPollingPause

public int getPollingPause()

setPollingPause

public void setPollingPause(int pollingPause)

readPacket

public byte[] readPacket()
                  throws IOException,
                         CorruptPacketException

readPacket

public byte[] readPacket(int timeout)
                  throws IOException,
                         CorruptPacketException

skip

public long skip(long n)
          throws IOException
Skips over n bytes in the input-buffer. If there are less than n bytes in the buffer, this method also calls skip(long) on the associated InputStream for the rest of the bytes. This Method is synchronized because of a global input-buffer.
Overrides:
skip in class FilterInputStream
Returns:
The total number of bytes skipped.
Throws:
IOException, - only when the call to skip(long) on the associated InputStream throws one.

available

public int available()
              throws IOException
Returns the number of bytes in the input-buffer added to the result of super.available().
Overrides:
available in class FilterInputStream