com.sun.sgs.impl.service.data.store.net
Class DataStoreProtocol

java.lang.Object
  extended by com.sun.sgs.impl.service.data.store.net.DataStoreProtocol
All Implemented Interfaces:
DataStoreServer, Remote

 class DataStoreProtocol
extends Object
implements DataStoreServer

Defines an experimental network protocol, not currently used, used to transfer DataStoreServer methods over input and output streams, to use instead of RMI.


Constructor Summary
DataStoreProtocol(InputStream in, OutputStream out)
          Creates an instance using the specified streams.
 
Method Summary
 void abort(long tid)
          Aborts the transaction.
 void commit(long tid)
          Commits the transaction.
 long createObject(long tid)
          Reserves an object ID for a new object.
 long createTransaction(long timeout)
          Creates a new transaction, and returns the associated ID, which will not be negative.
(package private)  void dispatch(DataStoreServer server)
          Dispatches a single method call to the server.
 BindingValue getBinding(long tid, String name)
          Obtains the object ID bound to a name.
 int getClassId(long tid, byte[] classInfo)
          Returns the class ID to represent classes with the specified class information.
 byte[] getClassInfo(long tid, int classId)
          Returns the class information associated with the specified class ID.
 byte[] getObject(long tid, long oid, boolean forUpdate)
          Obtains the data associated with an object ID.
 void markForUpdate(long tid, long oid)
          Notifies the server that an object is going to be modified.
 long newNodeId()
          Returns a new node ID for use with a newly started node.
 String nextBoundName(long tid, String name)
          Returns the next name after the specified name that has a binding, or null if there are no more bound names.
 long nextObjectId(long tid, long oid)
          Returns the object ID for the next object after the object with the specified ID, or -1 if there are no more objects.
 boolean prepare(long tid)
          Prepares the transaction to commit.
 void prepareAndCommit(long tid)
          Prepares and commits the transaction.
 BindingValue removeBinding(long tid, String name)
          Removes the binding for a name.
 void removeObject(long tid, long oid)
          Removes the object with the specified object ID.
 BindingValue setBinding(long tid, String name, long oid)
          Binds an object ID to a name.
 void setObject(long tid, long oid, byte[] data)
          Specifies data to associate with an object ID.
 void setObjects(long tid, long[] oids, byte[][] dataArray)
          Specifies data to associate with a series of object IDs.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataStoreProtocol

DataStoreProtocol(InputStream in,
                  OutputStream out)
Creates an instance using the specified streams.

Method Detail

dispatch

void dispatch(DataStoreServer server)
        throws IOException
Dispatches a single method call to the server.

Throws:
IOException

newNodeId

public long newNodeId()
               throws IOException
Description copied from interface: DataStoreServer
Returns a new node ID for use with a newly started node.

Specified by:
newNodeId in interface DataStoreServer
Returns:
the new node ID
Throws:
IOException - if a network problem occurs

createObject

public long createObject(long tid)
                  throws IOException
Description copied from interface: DataStoreServer
Reserves an object ID for a new object. Note that calling other operations using this ID are not required to find the objects until setObject is called. Aborting a transaction is also not required to unassign any of the IDs so long as other operations treat them as non-existent objects.

Specified by:
createObject in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
Returns:
the new object ID
Throws:
IOException - if a network problem occurs

markForUpdate

public void markForUpdate(long tid,
                          long oid)
                   throws IOException
Description copied from interface: DataStoreServer
Notifies the server that an object is going to be modified.

Specified by:
markForUpdate in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
oid - the object ID
Throws:
IOException - if a network problem occurs

getObject

public byte[] getObject(long tid,
                        long oid,
                        boolean forUpdate)
                 throws IOException
Description copied from interface: DataStoreServer
Obtains the data associated with an object ID. If the forUpdate parameter is true, the caller is stating its intention to modify the object.

Specified by:
getObject in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
oid - the object ID
forUpdate - whether the caller intends to modify the object
Returns:
the data associated with the object ID
Throws:
IOException - if a network problem occurs

setObject

public void setObject(long tid,
                      long oid,
                      byte[] data)
               throws IOException
Description copied from interface: DataStoreServer
Specifies data to associate with an object ID.

Specified by:
setObject in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
oid - the object ID
data - the data
Throws:
IOException - if a network problem occurs

setObjects

public void setObjects(long tid,
                       long[] oids,
                       byte[][] dataArray)
                throws IOException
Description copied from interface: DataStoreServer
Specifies data to associate with a series of object IDs.

Specified by:
setObjects in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
oids - the object IDs
dataArray - the associated data values
Throws:
IOException - if a network problem occurs

removeObject

public void removeObject(long tid,
                         long oid)
                  throws IOException
Description copied from interface: DataStoreServer
Removes the object with the specified object ID.

Specified by:
removeObject in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
oid - the object ID
Throws:
IOException - if a network problem occurs

getBinding

public BindingValue getBinding(long tid,
                               String name)
                        throws IOException
Description copied from interface: DataStoreServer
Obtains the object ID bound to a name. If the name is bound, the return value contains the object ID that the name is bound to and a next name of null. If the name is not bound, the return value contains an object ID of -1 and the next name found, which may be null.

Specified by:
getBinding in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
name - the name
Returns:
information about the object ID and the next name
Throws:
IOException - if a network problem occurs

setBinding

public BindingValue setBinding(long tid,
                               String name,
                               long oid)
                        throws IOException
Description copied from interface: DataStoreServer
Binds an object ID to a name. If the name is bound, the return value contains an arbitrary non-negative object ID and a next name of null. If the name is not bound, the return value contains an object ID of -1 and the next name found, which may be null.

Specified by:
setBinding in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
name - the name
oid - the object ID
Returns:
information about the object ID and the next name
Throws:
IOException - if a network problem occurs

removeBinding

public BindingValue removeBinding(long tid,
                                  String name)
                           throws IOException
Description copied from interface: DataStoreServer
Removes the binding for a name. If the name is bound, the return value contains an arbitrary non-negative object ID, otherwise it contains -1. In all cases, the return value contains the next name found, which may be null.

Specified by:
removeBinding in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
name - the name
Returns:
information about the object ID and the next name
Throws:
IOException - if a network problem occurs

nextBoundName

public String nextBoundName(long tid,
                            String name)
                     throws IOException
Description copied from interface: DataStoreServer
Returns the next name after the specified name that has a binding, or null if there are no more bound names. If name is null, then the search starts at the beginning.

Specified by:
nextBoundName in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
name - the name to search after, or null to start at the beginning
Returns:
the next name with a binding following name, or null if there are no more bound names
Throws:
IOException - if a network problem occurs

getClassId

public int getClassId(long tid,
                      byte[] classInfo)
               throws IOException
Description copied from interface: DataStoreServer
Returns the class ID to represent classes with the specified class information. Obtains an existing ID for the class information if present; otherwise, stores the information and returns the new ID associated with it. Class IDs are always greater than 0. The class information is the serialized form of the ObjectStreamClass instance that serialization uses to represent the class.

Specified by:
getClassId in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
classInfo - the class information
Returns:
the associated class ID
Throws:
IOException - if a network problem occurs

getClassInfo

public byte[] getClassInfo(long tid,
                           int classId)
                    throws IOException
Description copied from interface: DataStoreServer
Returns the class information associated with the specified class ID. The class information is the serialized form of the ObjectStreamClass instance that serialization uses to represent the class.

Specified by:
getClassInfo in interface DataStoreServer
Parameters:
tid - the ID of the transaction under which the operation should take place
classId - the class ID
Returns:
the associated class information
Throws:
IOException - if a network problem occurs

nextObjectId

public long nextObjectId(long tid,
                         long oid)
                  throws IOException
Description copied from interface: DataStoreServer
Returns the object ID for the next object after the object with the specified ID, or -1 if there are no more objects. If objectId is -1, then returns the ID of the first object. The IDs returned by this method will not include ones for objects that have already been removed, and may not include identifiers for objects created after an iteration has begun. It is not an error for the object associated with the specified identifier to have already been removed.

Specified by:
nextObjectId in interface DataStoreServer
Parameters:
tid - the ID of the transaction
oid - the identifier of the object to search after, or -1 to request the first object
Returns:
the identifier of the next object following the object with identifier oid, or -1 if there are no more objects
Throws:
IOException - if a network problem occurs

createTransaction

public long createTransaction(long timeout)
                       throws IOException
Description copied from interface: DataStoreServer
Creates a new transaction, and returns the associated ID, which will not be negative.

Specified by:
createTransaction in interface DataStoreServer
Parameters:
timeout - the number of milliseconds the resulting transaction should be allowed to run before it times out
Returns:
the ID of the new transaction
Throws:
IOException - if a network problem occurs

prepare

public boolean prepare(long tid)
                throws IOException
Description copied from interface: DataStoreServer
Prepares the transaction to commit. Returns true when no state was modified, and neither commit or abort should be called.

Specified by:
prepare in interface DataStoreServer
Parameters:
tid - the ID of the transaction
Returns:
true if this participant is read-only, otherwise false
Throws:
IOException - if a network problem occurs

commit

public void commit(long tid)
            throws IOException
Description copied from interface: DataStoreServer
Commits the transaction.

Specified by:
commit in interface DataStoreServer
Parameters:
tid - the ID of the transaction
Throws:
IOException - if a network problem occurs

prepareAndCommit

public void prepareAndCommit(long tid)
                      throws IOException
Description copied from interface: DataStoreServer
Prepares and commits the transaction.

Specified by:
prepareAndCommit in interface DataStoreServer
Parameters:
tid - the ID of the transaction
Throws:
IOException - if a network problem occurs

abort

public void abort(long tid)
           throws IOException
Description copied from interface: DataStoreServer
Aborts the transaction.

Specified by:
abort in interface DataStoreServer
Parameters:
tid - the ID of the transaction
Throws:
IOException - if a network problem occurs

RedDwarf, Version 0.10.1
2010-03-14 10:56:12

Copyright © 2010 The RedDwarf Authors. All rights reserved
Copyright © 2007-2010 Sun Microsystems, Inc. All rights reserved