ostore.network
Class NetworkInputBuffer

java.lang.Object
  |
  +--ostore.util.InputBufferImpl
        |
        +--ostore.network.NetworkInputBuffer
All Implemented Interfaces:
Cloneable, InputBuffer

public class NetworkInputBuffer
extends InputBufferImpl

Implements the InputBuffer interface as a linked list of ATcpInPacket objects.


Constructor Summary
NetworkInputBuffer(long next_seq_num)
           
 
Method Summary
 void add_packet(ATcpInPacket packet)
           
 Object clone()
          Buffers must support clone such that the read pointer on a cloned buffer is independent of the original.
 void convertToBytes(byte[][] out_buffer, int[][] out_offset)
           
 byte nextByte()
          Read the next byte out of the buffer.
 void nextBytes(byte[] out_buffer, int out_offset, int count)
          Read the next length bytes out the of the buffer, and place them in the array output, starting at index offset.
 void nextBytes(OutputBuffer output)
          Write all of the remaining bytes in this input buffer into the given output buffer.
 void skipBytes(int count)
           
 InputBuffer subBuffer(int count)
          Create a new input buffer from the read point at this one, containing the next length bytes.
 String toString()
           
 
Methods inherited from class ostore.util.InputBufferImpl
nextBigInteger, nextBigInteger, nextBoolean, nextBoolean, nextDouble, nextDouble, nextInt, nextInt, nextLong, nextLong, nextObject, nextObject, nextShort, nextShort, nextString, nextString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NetworkInputBuffer

public NetworkInputBuffer(long next_seq_num)
Method Detail

clone

public Object clone()
             throws CloneNotSupportedException
Description copied from interface: InputBuffer
Buffers must support clone such that the read pointer on a cloned buffer is independent of the original. This functionality is used in Tapestry and will be used in SignedQS as well, I think. It relates to the need to deserialize a buffer twice. Whether or not we keep using it is subject to change.

Specified by:
clone in interface InputBuffer
Overrides:
clone in class InputBufferImpl
CloneNotSupportedException

convertToBytes

public void convertToBytes(byte[][] out_buffer,
                           int[][] out_offset)

nextByte

public byte nextByte()
Description copied from interface: InputBuffer
Read the next byte out of the buffer.


nextBytes

public void nextBytes(byte[] out_buffer,
                      int out_offset,
                      int count)
Description copied from interface: InputBuffer
Read the next length bytes out the of the buffer, and place them in the array output, starting at index offset.

Parameters:
out_buffer - the array into which the bytes are written
out_offset - the index in output at which we start writing bytes
count - the number of bytes to read

skipBytes

public void skipBytes(int count)

nextBytes

public void nextBytes(OutputBuffer output)
Description copied from interface: InputBuffer
Write all of the remaining bytes in this input buffer into the given output buffer. We need something like this so that (for example) the payload of an RouteMsg doesn't have to be deserialized on an intermediate node in its path. I'm not entirely happy with the idea, though, so please don't use it for now without talking to me first about what you're using it for.

Parameters:
output - the output buffer into which the bytes are written

subBuffer

public InputBuffer subBuffer(int count)
Description copied from interface: InputBuffer
Create a new input buffer from the read point at this one, containing the next length bytes. Subject to change in the future.


add_packet

public void add_packet(ATcpInPacket packet)

toString

public String toString()
Overrides:
toString in class Object