## ucar.netcdf
Class RemoteAccessorImpl

    java.lang.Object
      java.rmi.server.RemoteObject
          ucar.netcdf.RemoteAccessorImpl

All Implemented Interfaces:
  Accessor, Remote, RemoteAccessor, Serializable

public class RemoteAccessorImpl
extends RemoteObject
implements RemoteAccessor

RemoteAccessorImpl is a UnicastRemoteObject (RMI service) which implements ucar.multiarray.RemoteAccessor using the proxy pattern. Accessor methods are forwarded to the adaptee and adaptee exceptions are wrapped in java.rmi.ServerException.

See Also:
  Serialized Form

Field Summary

Fields inherited from class java.rmi.server.RemoteObject
`ref`

Constructor Summary
`RemoteAccessorImpl(NetcdfRemoteProxyImpl svr, Accessor adaptee)` Construct a UnicastRemoteObject which acts as an Accessor proxy.

Method Summary
`void` `copyin(int[] origin, MultiArray source)` Aggregate write access.
`MultiArray` `copyout(int[] origin, int[] shape)` Aggregate read access.
`Object` `get(int[] index)` Get (read) the array element at index.
`boolean` `getBoolean(int[] index)` Get the array element at index, as a boolean.
`byte` `getByte(int[] index)` Get the array element at index, as a byte.
`char` `getChar(int[] index)` Get the array element at index, as a char.
`double` `getDouble(int[] index)` Get the array element at index, as a double.
`float` `getFloat(int[] index)` Get the array element at index, as a float.
`int` `getInt(int[] index)` Get the array element at index, as an int.
`long` `getLong(int[] index)` Get the array element at index, as a long.
`short` `getShort(int[] index)` Get the array element at index, as a short.
`void` `set(int[] index, Object value)` Set (modify, write) the array element at index to the specified value.
`void` `setBoolean(int[] index, boolean value)` Set the array element at index to the specified boolean value.
`void` `setByte(int[] index, byte value)` Set the array element at index to the specified byte value.
`void` `setChar(int[] index, char value)` Set the array element at index to the specified char value.
`void` `setDouble(int[] index, double value)` Set the array element at index to the specified double value.
`void` `setFloat(int[] index, float value)` Set the array element at index to the specified float value.
`void` `setInt(int[] index, int value)` Set the array element at index to the specified int value.
`void` `setLong(int[] index, long value)` Set the array element at index to the specified long value.
`void` `setShort(int[] index, short value)` Set the array element at index to the specified short value.
`Object` `toArray()` Returns a new array containing all of the elements in this MultiArray.
`Object` `toArray(Object dst, int[] origin, int[] shape)` Returns an array containing elements of this MultiArray specified by origin and shape, possibly converting the component type.

Methods inherited from class java.rmi.server.RemoteObject
`equals, getRef, hashCode, toString, toStub`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### RemoteAccessorImpl

    public RemoteAccessorImpl(NetcdfRemoteProxyImpl svr,
                              Accessor adaptee)
                       throws RemoteException

  Construct a UnicastRemoteObject which acts as an Accessor proxy.

Parameters:
  `svr` - NetcdfRemoteProxyImpl which owns this. May be null.
  `adaptee` - Accessor to which the Accessor methods of this are forwarded.

Method Detail

### get

    public Object get(int[] index)
               throws RemoteException

  Description copied from interface: `Accessor`
  Get (read) the array element at index. The returned value is wrapped in an object if it has a primitive type. Length of index must be greater than or equal to the rank of this. Values of index components must be less than corresponding values from getLengths().

  Specified by:
    `get` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getBoolean

    public boolean getBoolean(int[] index)
                       throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a boolean.

  Specified by:
    `getBoolean` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getChar

    public char getChar(int[] index)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a char.

  Specified by:
    `getChar` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getByte

    public byte getByte(int[] index)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a byte.

  Specified by:
    `getByte` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getShort

    public short getShort(int[] index)
                   throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a short.

  Specified by:
    `getShort` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getInt

    public int getInt(int[] index)
               throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as an int.

  Specified by:
    `getInt` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getLong

    public long getLong(int[] index)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a long.

  Specified by:
    `getLong` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getFloat

    public float getFloat(int[] index)
                   throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a float.

  Specified by:
    `getFloat` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### getDouble

    public double getDouble(int[] index)
                     throws RemoteException

  Description copied from interface: `Accessor`
  Get the array element at index, as a double.

  Specified by:
    `getDouble` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### set

    public void set(int[] index,
                    Object value)
             throws RemoteException

  Description copied from interface: `Accessor`
  Set (modify, write) the array element at index to the specified value. If the array has a primitive component type, the value may be unwrapped. Values of index components must be less than corresponding values from getLengths().

  Specified by:
    `set` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setBoolean

    public void setBoolean(int[] index,
                           boolean value)
                    throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified boolean value.

  Specified by:
    `setBoolean` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setChar

    public void setChar(int[] index,
                        char value)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified char value.

  Specified by:
    `setChar` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setByte

    public void setByte(int[] index,
                        byte value)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified byte value.

  Specified by:
    `setByte` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setShort

    public void setShort(int[] index,
                         short value)
                  throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified short value.

  Specified by:
    `setShort` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setInt

    public void setInt(int[] index,
                       int value)
                throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified int value.

  Specified by:
    `setInt` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setLong

    public void setLong(int[] index,
                        long value)
                 throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified long value.

  Specified by:
    `setLong` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setFloat

    public void setFloat(int[] index,
                         float value)
                  throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified float value.

  Specified by:
    `setFloat` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### setDouble

    public void setDouble(int[] index,
                          double value)
                   throws RemoteException

  Description copied from interface: `Accessor`
  Set the array element at index to the specified double value.

  Specified by:
    `setDouble` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### copyout

    public MultiArray copyout(int[] origin,
                              int[] shape)
                       throws RemoteException

  Description copied from interface: `Accessor`
  Aggregate read access. Return a new MultiArray of the same componentType as this, and with shape as specified, which is initialized to the values of this, as clipped to (origin, origin + shape).

  It is easier to implement than to specify :-).

  The main reason to implement this instead of using the equivalent proxy is for remote or file access.

  `assert(origin[ii] + shape[ii] <= lengths[ii]);`

  Specified by:
    `copyout` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### copyin

    public void copyin(int[] origin,
                       MultiArray source)
                throws RemoteException

  Description copied from interface: `Accessor`
  Aggregate write access. Given a MultiArray, copy it into this at the specified starting index. TODO: clearer specification.

  Hopefully this member can be optimized in various situations.

  `assert(origin[ii] + (source.getLengths())[ii] <= (getLengths())[ii]);`

  Specified by:
    `copyin` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### toArray

    public Object toArray()
                   throws RemoteException

  Description copied from interface: `Accessor`
  Returns a new array containing all of the elements in this MultiArray. The returned array is one dimensional. The order of the elements in the result is natural, as if we used an IndexIterator to step through the elements of this MultiArray. The component type of the result is the same as this.

  This method acts as bridge between array-based and MultiArray-based APIs.

  This method is functionally equivalent to

                      Object anArray = Array.newInstance(getComponentType(), 1);
                      int [] origin = new int[getRank()]
                      int [] shape = getDimensions();
                      return toArray(anArray, origin, shape);

  Specified by:
    `toArray` in interface `RemoteAccessor`
  Throws:
    `RemoteException`

### toArray

    public Object toArray(Object dst,
                          int[] origin,
                          int[] shape)
                   throws RemoteException

  Description copied from interface: `Accessor`
  Returns an array containing elements of this MultiArray specified by origin and shape, possibly converting the component type. The returned array is one dimensional. The order of the elements in the result is natural, as if we used an IndexIterator to step through the elements of this MultiArray.

  The anArray argument should be an array. If it is large enough to contain the output, it is used and no new storage is allocated. Otherwise, new storage is allocated with the same component type as the argument, and the data is copied into it.

  This method acts as bridge between array-based and MultiArray-based APIs.

  This method is similar to copyout(origin, shape).toArray(), but avoids a copy operation and (potentially) an allocation.

  NOTE: Implementation of type conversion is deferred until JDK 1.2. Currently, the componentType of `anArray` must be the same as `this`

  Specified by:
    `toArray` in interface `RemoteAccessor`
  Throws:
    `RemoteException`