Package com.sun.rpc

Class Xdr

java.lang.Object
com.sun.rpc.Xdr

public class Xdr extends 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 invalid input: '<'= size whenever an item is decoded so that we can raise an exception if the received data is underlength.
Author:
Brent Callaghan
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Xdr(int size)
    Build a new Xdr object with a buffer of given size
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Get a boolean from the buffer
    void
    xdr_bool(boolean b)
    Put a boolean into the buffer
    byte[]
    Return the entire Xdr buffer
    byte[]
    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
    Put an Xdr buffer into the buffer
    This is used to encode the RPC credentials
    float
    Get a floating point number from the buffer
    void
    xdr_float(float f)
    Put a floating point number into the buffer
    long
    Get a long from the buffer
    void
    xdr_hyper(long i)
    Put a long into the buffer
    int
    Get an integer from the buffer
    void
    xdr_int(int i)
    Put an integer into the buffer
    int
    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
    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.
    Get a string from the buffer
    void
    Put a string into the buffer
    long
    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
    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

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Xdr

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

    • 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.
    • 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 String xdr_string()
      Get a string from the buffer
      Returns:
      string
    • xdr_string

      public void xdr_string(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