bamboo.util
Class XdrByteBufferEncodingStream

java.lang.Object
  extended by org.acplt.oncrpc.XdrEncodingStream
      extended by bamboo.util.XdrByteBufferEncodingStream

public class XdrByteBufferEncodingStream
extends org.acplt.oncrpc.XdrEncodingStream

The XdrBufferEncodingStream class provides a ByteBuffer-based XDR stream. Cribbed by Sean Rhea from the class org.acplt.oncrpc.XdrBufferEncodingStream.

Version:
$Revision: 1.1 $ $Date: 2004/02/06 03:55:49 $ $State: Exp $ $Locker: $
Author:
Harald Albrecht, Sean Rhea

Constructor Summary
XdrByteBufferEncodingStream(ByteBuffer buffer)
          Constructs a new XdrBufferEncodingStream with a given buffer.
XdrByteBufferEncodingStream(int bufferSize)
          Constructs a new XdrBufferEncodingStream with a buffer to encode data into of the given size.
 
Method Summary
 void beginEncoding(InetAddress receiverAddress, int receiverPort)
          Begins encoding a new XDR record.
 void close()
          Closes this encoding XDR stream and releases any system resources associated with this stream.
 void endEncoding()
          Flushes this encoding XDR stream and forces any buffered output bytes to be written out.
 ByteBuffer getXdrData()
          Returns the buffer holding encoded data.
 int getXdrLength()
          Returns the amount of encoded data in the buffer.
 void xdrEncodeInt(int value)
          Encodes (aka "serializes") a "XDR int" value and writes it down a XDR stream.
 void xdrEncodeOpaque(byte[] value, int offset, int length)
          Encodes (aka "serializes") a XDR opaque value, which is represented by a vector of byte values, and starts at offset with a length of length.
 
Methods inherited from class org.acplt.oncrpc.XdrEncodingStream
xdrEncodeBoolean, xdrEncodeBooleanFixedVector, xdrEncodeBooleanVector, xdrEncodeByte, xdrEncodeByteFixedVector, xdrEncodeByteVector, xdrEncodeDouble, xdrEncodeDoubleFixedVector, xdrEncodeDoubleVector, xdrEncodeDynamicOpaque, xdrEncodeFloat, xdrEncodeFloatFixedVector, xdrEncodeFloatVector, xdrEncodeIntFixedVector, xdrEncodeIntVector, xdrEncodeLong, xdrEncodeLongFixedVector, xdrEncodeLongVector, xdrEncodeOpaque, xdrEncodeOpaque, xdrEncodeShort, xdrEncodeShortFixedVector, xdrEncodeShortVector, xdrEncodeString, xdrEncodeStringFixedVector, xdrEncodeStringVector
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XdrByteBufferEncodingStream

public XdrByteBufferEncodingStream(int bufferSize)
Constructs a new XdrBufferEncodingStream with a buffer to encode data into of the given size.

Parameters:
bufferSize - Size of buffer to store encoded data in.

XdrByteBufferEncodingStream

public XdrByteBufferEncodingStream(ByteBuffer buffer)
Constructs a new XdrBufferEncodingStream with a given buffer.

Parameters:
buffer - Buffer to store encoded information in.
Throws:
IllegalArgumentException - if encodedLength is not a multiple of four.
Method Detail

getXdrLength

public int getXdrLength()
Returns the amount of encoded data in the buffer.

Returns:
length of data encoded in buffer.

getXdrData

public ByteBuffer getXdrData()
Returns the buffer holding encoded data.

Returns:
Buffer with encoded data.

beginEncoding

public void beginEncoding(InetAddress receiverAddress,
                          int receiverPort)
                   throws org.acplt.oncrpc.OncRpcException,
                          IOException
Begins encoding a new XDR record. This involves resetting this encoding XDR stream back into a known state.

Overrides:
beginEncoding in class org.acplt.oncrpc.XdrEncodingStream
Parameters:
receiver - Indicates the receiver of the XDR data. This can be null for XDR streams connected permanently to a receiver (like in case of TCP/IP based XDR streams).
receiverPort - Port number of the receiver.
Throws:
org.acplt.oncrpc.OncRpcException - if an ONC/RPC error occurs.
IOException - if an I/O error occurs.

endEncoding

public void endEncoding()
                 throws org.acplt.oncrpc.OncRpcException,
                        IOException
Flushes this encoding XDR stream and forces any buffered output bytes to be written out. The general contract of endEncoding is that calling it is an indication that the current record is finished and any bytes previously encoded should immediately be written to their intended destination.

Overrides:
endEncoding in class org.acplt.oncrpc.XdrEncodingStream
Throws:
org.acplt.oncrpc.OncRpcException - if an ONC/RPC error occurs.
IOException - if an I/O error occurs.

close

public void close()
           throws org.acplt.oncrpc.OncRpcException,
                  IOException
Closes this encoding XDR stream and releases any system resources associated with this stream. The general contract of close is that it closes the encoding XDR stream. A closed XDR stream cannot perform encoding operations and cannot be reopened.

Overrides:
close in class org.acplt.oncrpc.XdrEncodingStream
Throws:
org.acplt.oncrpc.OncRpcException - if an ONC/RPC error occurs.
IOException - if an I/O error occurs.

xdrEncodeInt

public void xdrEncodeInt(int value)
                  throws org.acplt.oncrpc.OncRpcException,
                         IOException
Encodes (aka "serializes") a "XDR int" value and writes it down a XDR stream. A XDR int is 32 bits wide -- the same width Java's "int" data type has. This method is one of the basic methods all other methods can rely on.

Specified by:
xdrEncodeInt in class org.acplt.oncrpc.XdrEncodingStream
Throws:
org.acplt.oncrpc.OncRpcException - if an ONC/RPC error occurs.
IOException - if an I/O error occurs.

xdrEncodeOpaque

public void xdrEncodeOpaque(byte[] value,
                            int offset,
                            int length)
                     throws org.acplt.oncrpc.OncRpcException,
                            IOException
Encodes (aka "serializes") a XDR opaque value, which is represented by a vector of byte values, and starts at offset with a length of length. Only the opaque value is encoded, but no length indication is preceeding the opaque value, so the receiver has to know how long the opaque value will be. The encoded data is always padded to be a multiple of four. If the given length is not a multiple of four, zero bytes will be used for padding.

Specified by:
xdrEncodeOpaque in class org.acplt.oncrpc.XdrEncodingStream
Throws:
org.acplt.oncrpc.OncRpcException - if an ONC/RPC error occurs.
IOException - if an I/O error occurs.