com.sun.rpc
Class Xdr

java.lang.Object
  |
  +--com.sun.rpc.Xdr

public class Xdr
extends java.lang.Object

This class handles the marshalling/unmarshalling of primitive data types into and out of a buffer. The XDR buffer is a field within this class and its size is determined when the class is instantiated. Other than this buffer, there are just two pointers: "off" is the current XDR offset into the buffer and moves up the buffer by an integral number of XDRUNITs as data are encoded/decoded. The other pointer is "size" which is the number of valid data bytes in the buffer and is set only for received buffers. XXX we should perhaps check that off <= size whenever an item is decoded so that we can raise an exception if the received data is underlength.

See Also:
Rpc

Constructor Summary
Xdr(int size)
          Build a new Xdr object with a buffer of given size
 
Method Summary
 boolean xdr_bool()
          Get a boolean from the buffer
 void xdr_bool(boolean b)
          Put a boolean into the buffer
 byte[] xdr_buf()
          Return the entire Xdr buffer
 byte[] xdr_bytes()
          Get a counted array of bytes from the buffer
 void xdr_bytes(byte[] b)
          Put a counted array of bytes into the buffer.
 void xdr_bytes(byte[] b, int len)
          Put a counted array of bytes into the buffer
 void xdr_bytes(byte[] b, int boff, int len)
          Put a counted array of bytes into the buffer
 void xdr_bytes(Xdr x)
          Put an Xdr buffer into the buffer
This is used to encode the RPC credentials
 float xdr_float()
          Get a floating point number from the buffer
 void xdr_float(float f)
          Put a floating point number into the buffer
 long xdr_hyper()
          Get a long from the buffer
 void xdr_hyper(long i)
          Put a long into the buffer
 int xdr_int()
          Get an integer from the buffer
 void xdr_int(int i)
          Put an integer into the buffer
 int xdr_offset()
          Return the current offset
 void xdr_offset(int off)
          Set the current offset
 void xdr_raw(byte[] b)
          Put a fixed number of bytes into the buffer The length is not encoded.
 void xdr_raw(byte[] b, int off)
          Put a fixed number of bytes into the buffer at offset off.
 void xdr_raw(byte[] b, int boff, int len)
          Put a counted array of bytes into the buffer.
 byte[] xdr_raw(int len)
          Get a fixed number of bytes from the buffer e.g.
 byte[] xdr_raw(int off, int len)
          Get a fixed number (len) of bytes from the buffer at offset off.
 int xdr_size()
          Return the current size of the XDR buffer
 void xdr_size(int size)
          Set the current size of the XDR buffer
 void xdr_skip(int count)
          Skip a number of bytes.
 java.lang.String xdr_string()
          Get a string from the buffer
 void xdr_string(java.lang.String s)
          Put a string into the buffer
 long xdr_u_int()
          Get an unsigned integer from the buffer
Note that Java has no unsigned integer type so we must return it as a long.
 void xdr_u_int(long i)
          Put an unsigned integer into the buffer Note that Java has no unsigned integer type so we must submit it as a long.
 int xdr_wrap_offset()
          Return the starting point of the bytes that will be encrypted.
 void xdr_wrap_offset(int off)
          Set the starting point of the bytes that will be encrypted.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Xdr

public Xdr(int size)
Build a new Xdr object with a buffer of given size
Parameters:
size - of the buffer in bytes
Method Detail

xdr_skip

public void xdr_skip(int count)
Skip a number of bytes.
Note that the count is rounded up to the next XDRUNIT.
Parameters:
count - of the buffer in bytes

xdr_buf

public byte[] xdr_buf()
Return the entire Xdr buffer
Returns:
Xdr buffer

xdr_offset

public int xdr_offset()
Return the current offset
Returns:
offset

xdr_offset

public void xdr_offset(int off)
Set the current offset
Parameters:
off - offset into XDR buffer

xdr_wrap_offset

public int xdr_wrap_offset()
Return the starting point of the bytes that will be encrypted.
Returns:
offset for bytes to be encrypted

xdr_wrap_offset

public void xdr_wrap_offset(int off)
Set the starting point of the bytes that will be encrypted.
Returns:
offset for bytes to be encrypted

xdr_size

public int xdr_size()
Return the current size of the XDR buffer
Returns:
size

xdr_size

public void xdr_size(int size)
Set the current size of the XDR buffer
Parameters:
size - of buffer

xdr_int

public int xdr_int()
Get an integer from the buffer
Returns:
integer

xdr_int

public void xdr_int(int i)
Put an integer into the buffer
Parameters:
i - Integer to store in XDR buffer.

xdr_u_int

public long xdr_u_int()
Get an unsigned integer from the buffer
Note that Java has no unsigned integer type so we must return it as a long.
Returns:
long

xdr_u_int

public void xdr_u_int(long i)
Put an unsigned integer into the buffer Note that Java has no unsigned integer type so we must submit it as a long.
Parameters:
i - unsigned integer to store in XDR buffer.

xdr_hyper

public long xdr_hyper()
Get a long from the buffer
Returns:
long

xdr_hyper

public void xdr_hyper(long i)
Put a long into the buffer
Parameters:
i - long to store in XDR buffer

xdr_bool

public boolean xdr_bool()
Get a boolean from the buffer
Returns:
boolean

xdr_bool

public void xdr_bool(boolean b)
Put a boolean into the buffer
Parameters:
b - boolean

xdr_float

public float xdr_float()
Get a floating point number from the buffer
Returns:
float

xdr_float

public void xdr_float(float f)
Put a floating point number into the buffer
Parameters:
f - float

xdr_string

public java.lang.String xdr_string()
Get a string from the buffer
Returns:
string

xdr_string

public void xdr_string(java.lang.String s)
Put a string into the buffer
Parameters:
s - string

xdr_bytes

public byte[] xdr_bytes()
Get a counted array of bytes from the buffer
Returns:
bytes

xdr_bytes

public void xdr_bytes(byte[] b)
Put a counted array of bytes into the buffer. Note that the entire byte array is encoded.
Parameters:
b - byte array

xdr_bytes

public void xdr_bytes(byte[] b,
                      int len)
Put a counted array of bytes into the buffer
Parameters:
b - byte array
len - number of bytes to encode

xdr_bytes

public void xdr_bytes(byte[] b,
                      int boff,
                      int len)
Put a counted array of bytes into the buffer
Parameters:
b - byte array
boff - offset into byte array
len - number of bytes to encode

xdr_bytes

public void xdr_bytes(Xdr x)
Put an Xdr buffer into the buffer
This is used to encode the RPC credentials
Parameters:
x - XDR buffer

xdr_raw

public byte[] xdr_raw(int len)
Get a fixed number of bytes from the buffer e.g. an NFS v2 filehandle
Parameters:
len - Number of bytes to get
Returns:
byte array

xdr_raw

public byte[] xdr_raw(int off,
                      int len)
Get a fixed number (len) of bytes from the buffer at offset off. Do not change any buffer indicators.
Parameters:
off - Offset of bytes to get from
len - Number of bytes to copy
Returns:
byte array

xdr_raw

public void xdr_raw(byte[] b)
Put a fixed number of bytes into the buffer The length is not encoded. e.g. an NFS v2 filehandle
Parameters:
b - byte array

xdr_raw

public void xdr_raw(byte[] b,
                    int off)
Put a fixed number of bytes into the buffer at offset off. The length is not encoded.
Parameters:
b - byte array
off - where to put the byte array

xdr_raw

public void xdr_raw(byte[] b,
                    int boff,
                    int len)
Put a counted array of bytes into the buffer. The length is not encoded.
Parameters:
b - byte array
boff - offset into byte array
len - number of bytes to encode