lime
Class LimeTSMgr

java.lang.Object
  extended byjava.lang.Thread
      extended bylime.LimeTSMgr
All Implemented Interfaces:
LimeConstants, java.lang.Runnable
Direct Known Subclasses:
LimeSystemTSMgr

class LimeTSMgr
extends java.lang.Thread
implements LimeConstants

The LimeTSMgr manages a LimeTupleSpace. It keeps track of whether the tuple space is locked in a transaction.


Field Summary
static java.lang.String AGENT
           
static short AGENT_BYE
           
static java.lang.String AGENT_GONE
           
static short AGENT_HELLO
           
static int AGENT_ID_TAG
           
static short AGENT_LOCALHOST
           
static short AGENT_NOTINSYS
           
static short AGENT_REMOTE
           
static short AGENT_UNSPECIFIED
           
static short DATA
           
static short DECLARE_LEADER
           
static short DISENGAGE_AGENT
           
static short DISENGAGE_HOST
           
static short ENGAGE_AGENT
           
static short ENGAGE_HOST
           
static short GO
           
static java.lang.String HOST
           
static int HOST_ADDR_TAG
           
static short HOST_BYE
           
static java.lang.String HOST_GONE
           
static short HOST_HELLO
           
static short HOST_LOCALHOST
           
static short HOST_NOTINSYS
           
static short HOST_REMOTE
           
static int HOST_TUPLE_HOST_TAG
           
static short HOST_UNSPECIFIED
           
(package private)  Queue incomingEvents
           
(package private)  Queue incomingOps
           
(package private)  Queue incomingTransactionStarts
           
(package private)  QueueWaiter incomingWaiter
           
static int INCOMMING_EVENTS_QUEUE
           
static int INCOMMING_OPS_QUEUE
           
static int INCOMMING_TRANSACTION_STARTS_QUEUE
           
static short ING
           
static short INITIATOR_REQ
           
static short INST_REACTS_TO
           
static short INST_REM_UPON_LISTENER
           
static short INST_UPON_LISTENER
           
(package private)  boolean inTransaction
          Indicates whether the tuple space is participating in a transaction.
static short LOCAL_SYS_TAKE
           
static int MAX_ROUNDS
           
(package private)  java.lang.String name
          The name of the tuple space.
(package private) static java.util.Hashtable namedTS
          Holds tuple spaces keyed by their names.
static short OUTG
           
(package private)  java.util.Hashtable pendingWrite
          Maps the sequence number to the TupleOpDescriptor.
private  long pendingWriteSeqNum
           
static short RDG
           
(package private)  Reactor reactor
          The local reactor.
static short REACTS_TO
           
static short READ
           
static short READY
           
static short READY_SPECIAL
           
static short REM_ING
           
static short REM_OUTG
           
static short REM_OUTG_ACK
           
static short REM_RDG
           
static short REM_SYS_READ
           
static short REM_SYS_TAKE
           
static short REMOVE_REACTS_TO
           
static short REMOVE_REM_UPON_LISTENER
           
static short REMOVE_UPON
           
(package private)  java.util.Hashtable replyTuples
          Used for upon and reactions.
static short REQUEST_TRANSACTION
           
(package private)  java.util.Hashtable savedReactions
          Used to reinstall the reaction of an upon of a waiting operation
static short SET_HOST
           
static short SET_SHARED
           
static short SETUP
           
static short SETUP_SPECIAL
           
static short START
           
static short SYS_READ
           
static short SYS_REPLY
           
static short SYS_TAKE
           
(package private) static LimeSystemTSMgr sysMgr
          The LimeSystemTupleSpace manager.
static short TAKE
           
static short TRANSACTION_GRANTED
           
private  Lock transactionLock
           
(package private)  TransactionMgr transactionMgr
          The transaction manager.
static java.lang.String TS
           
static java.lang.String TS_GONE
           
static int TS_ID_TAG
           
(package private)  lights.interfaces.ITupleSpace tupleSpace
          A named tuple space.
static int TYPE_TAG
           
static short UPON
           
static short UPON_EVENT
           
(package private)  UponMgr upons
          both pending and uninstalled upons...
static java.lang.String VERSION
           
static short WAIT_TO_READ
           
static short WAIT_TO_TAKE
           
static short WRITE
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
(package private) LimeTSMgr(java.lang.String name, boolean inTransaction)
           
 
Method Summary
private  void doInstReactsTo(ReactionsOpDescriptor opDesc)
           
private  void doInstRemUponListener(RemoteUponOpDescriptor opDesc)
           
private  void doInstUponListener(ReactionsOpDescriptor opDesc)
          When a set of upon reactions are to be installed, each individual reaction can be remote, local, or broadcast.
(package private)  void doRemOutg(RemoteTupleOpDescriptor opDesc, boolean sendAck)
          Put the tuple that comes from remotely into the tuple space.
private  void doRemOutgAck(RemoteTupleOpDescriptor opDesc)
           
private  void doRemoveReactsTo(ReactionsOpDescriptor opDesc)
           
private  void doRemoveRemUponListener(RemoteUponOpDescriptor opDesc)
           
private  void doRemoveUpon(ReactionsOpDescriptor opDesc)
          Uninstalling an array of upons has the same problem atomicity problmes as installing an array of reactions or upons.
private  void doRemSys(RemoteTupleOpDescriptor opDesc)
          A read or take operation from a remote host is serviced and the result put into the outgoing queue to be returned to the agent that requested the operation in a SYS_REPLY (because by this point, whether the operation was a TAKE or READ doesn't matter.
private  void doSys(TupleOpDescriptor opDesc)
          Perform a probing read or take.
(package private)  void doSysReply(RemoteTupleOpDescriptor opDesc)
          A SysReply message is the actual tuple being returned from the remote system.
private  void doUponEvent(RemoteUponOpDescriptor opDesc)
          An UponEvent is a messages that arrives from a remote system when an upon fires.
(package private)  void doWait(TupleOpDescriptor opDesc)
          Waiting operations can either be for a specific host or for any host.
private  void doWrite(TupleOpDescriptor opDesc)
          'doWrite' perform the local write operation or put the tuple in the outgoing queue
private  void generateRemoteSysReq(TupleOpDescriptor opDesc, lights.interfaces.ITuple opTemplate, LimeServerID opDestination)
          Make the reaction to go into the pendingUpon structure, and put the remote system take or read opeartion into the outgoing queue.
(package private) static java.lang.String getOpType(short type)
          Used for debugging purposes.
(package private)  RegisteredReaction[] getRemRegReactByAgent(AgentID subscriber)
           
(package private)  Lock getTransactionLock()
           
(package private)  void mergeMisplaced(java.util.Vector tuples, java.util.Vector upons)
           
(package private)  lights.interfaces.ITuple[] mergePrivateWithPublic(LimeTupleSpace lts)
          Called from the Transaction manager to merge the upons/reactions of a private tuple space into the public space, and to return the tuples which are to be handed to the reactor when the transaction is complete
private  long newSeqNum()
          Returns a new sequence number.
(package private)  void performOp(OpDescriptor opDesc)
           
(package private)  void postOp(LocalOpDescriptor opDesc)
          Places operations into the INCOMMING_OPS_QUEUE queue.
(package private)  void printMisplacedTuples(java.util.Vector t)
          Used for debugging purposes.
(package private)  lights.interfaces.ITuple readOrTakeTuple(short type, lights.interfaces.ITuple template)
          read or take a tuple (based on the type passed) from the tuple space of this manager
private  OpDescriptor removeFirstElement(java.util.Vector v)
           
 void run()
           
(package private) static lights.interfaces.ITuple[] takeTupleSpaceProjection(lights.interfaces.ITupleSpace ts, AgentID[] agents, int index)
          Returns the set of tuples that represent a given projection of the tuple space.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INCOMMING_EVENTS_QUEUE

public static final int INCOMMING_EVENTS_QUEUE
See Also:
Constant Field Values

INCOMMING_OPS_QUEUE

public static final int INCOMMING_OPS_QUEUE
See Also:
Constant Field Values

INCOMMING_TRANSACTION_STARTS_QUEUE

public static final int INCOMMING_TRANSACTION_STARTS_QUEUE
See Also:
Constant Field Values

namedTS

static java.util.Hashtable namedTS
Holds tuple spaces keyed by their names.


incomingOps

Queue incomingOps

incomingEvents

Queue incomingEvents

incomingTransactionStarts

Queue incomingTransactionStarts

incomingWaiter

QueueWaiter incomingWaiter

inTransaction

boolean inTransaction
Indicates whether the tuple space is participating in a transaction.


transactionLock

private Lock transactionLock

transactionMgr

TransactionMgr transactionMgr
The transaction manager.


sysMgr

static LimeSystemTSMgr sysMgr
The LimeSystemTupleSpace manager.


tupleSpace

lights.interfaces.ITupleSpace tupleSpace
A named tuple space.


reactor

Reactor reactor
The local reactor.


savedReactions

java.util.Hashtable savedReactions
Used to reinstall the reaction of an upon of a waiting operation


replyTuples

java.util.Hashtable replyTuples
Used for upon and reactions.


pendingWrite

java.util.Hashtable pendingWrite
Maps the sequence number to the TupleOpDescriptor.


name

java.lang.String name
The name of the tuple space.


upons

UponMgr upons
both pending and uninstalled upons...


pendingWriteSeqNum

private long pendingWriteSeqNum

VERSION

public static final java.lang.String VERSION
See Also:
Constant Field Values

WRITE

public static final short WRITE
See Also:
Constant Field Values

OUTG

public static final short OUTG
See Also:
Constant Field Values

REM_OUTG_ACK

public static final short REM_OUTG_ACK
See Also:
Constant Field Values

TAKE

public static final short TAKE
See Also:
Constant Field Values

WAIT_TO_TAKE

public static final short WAIT_TO_TAKE
See Also:
Constant Field Values

ING

public static final short ING
See Also:
Constant Field Values

READ

public static final short READ
See Also:
Constant Field Values

WAIT_TO_READ

public static final short WAIT_TO_READ
See Also:
Constant Field Values

RDG

public static final short RDG
See Also:
Constant Field Values

REACTS_TO

public static final short REACTS_TO
See Also:
Constant Field Values

UPON

public static final short UPON
See Also:
Constant Field Values

REMOVE_REACTS_TO

public static final short REMOVE_REACTS_TO
See Also:
Constant Field Values

REMOVE_UPON

public static final short REMOVE_UPON
See Also:
Constant Field Values

INST_REACTS_TO

public static final short INST_REACTS_TO
See Also:
Constant Field Values

INST_UPON_LISTENER

public static final short INST_UPON_LISTENER
See Also:
Constant Field Values

INST_REM_UPON_LISTENER

public static final short INST_REM_UPON_LISTENER
See Also:
Constant Field Values

REMOVE_REM_UPON_LISTENER

public static final short REMOVE_REM_UPON_LISTENER
See Also:
Constant Field Values

REM_SYS_TAKE

public static final short REM_SYS_TAKE
See Also:
Constant Field Values

REM_SYS_READ

public static final short REM_SYS_READ
See Also:
Constant Field Values

REM_ING

public static final short REM_ING
See Also:
Constant Field Values

REM_RDG

public static final short REM_RDG
See Also:
Constant Field Values

SYS_TAKE

public static final short SYS_TAKE
See Also:
Constant Field Values

SYS_READ

public static final short SYS_READ
See Also:
Constant Field Values

REM_OUTG

public static final short REM_OUTG
See Also:
Constant Field Values

UPON_EVENT

public static final short UPON_EVENT
See Also:
Constant Field Values

SYS_REPLY

public static final short SYS_REPLY
See Also:
Constant Field Values

LOCAL_SYS_TAKE

public static final short LOCAL_SYS_TAKE
See Also:
Constant Field Values

SET_SHARED

public static final short SET_SHARED
See Also:
Constant Field Values

SET_HOST

public static final short SET_HOST
See Also:
Constant Field Values

DECLARE_LEADER

public static final short DECLARE_LEADER
See Also:
Constant Field Values

ENGAGE_AGENT

public static final short ENGAGE_AGENT
See Also:
Constant Field Values

ENGAGE_HOST

public static final short ENGAGE_HOST
See Also:
Constant Field Values

DISENGAGE_AGENT

public static final short DISENGAGE_AGENT
See Also:
Constant Field Values

DISENGAGE_HOST

public static final short DISENGAGE_HOST
See Also:
Constant Field Values

GO

public static final short GO
See Also:
Constant Field Values

INITIATOR_REQ

public static final short INITIATOR_REQ
See Also:
Constant Field Values

SETUP

public static final short SETUP
See Also:
Constant Field Values

READY

public static final short READY
See Also:
Constant Field Values

START

public static final short START
See Also:
Constant Field Values

DATA

public static final short DATA
See Also:
Constant Field Values

SETUP_SPECIAL

public static final short SETUP_SPECIAL
See Also:
Constant Field Values

READY_SPECIAL

public static final short READY_SPECIAL
See Also:
Constant Field Values

REQUEST_TRANSACTION

public static final short REQUEST_TRANSACTION
See Also:
Constant Field Values

TRANSACTION_GRANTED

public static final short TRANSACTION_GRANTED
See Also:
Constant Field Values

HOST_BYE

public static final short HOST_BYE
See Also:
Constant Field Values

HOST_HELLO

public static final short HOST_HELLO
See Also:
Constant Field Values

AGENT_BYE

public static final short AGENT_BYE
See Also:
Constant Field Values

AGENT_HELLO

public static final short AGENT_HELLO
See Also:
Constant Field Values

HOST_LOCALHOST

public static final short HOST_LOCALHOST
See Also:
Constant Field Values

HOST_REMOTE

public static final short HOST_REMOTE
See Also:
Constant Field Values

HOST_NOTINSYS

public static final short HOST_NOTINSYS
See Also:
Constant Field Values

HOST_UNSPECIFIED

public static final short HOST_UNSPECIFIED
See Also:
Constant Field Values

AGENT_LOCALHOST

public static final short AGENT_LOCALHOST
See Also:
Constant Field Values

AGENT_REMOTE

public static final short AGENT_REMOTE
See Also:
Constant Field Values

AGENT_NOTINSYS

public static final short AGENT_NOTINSYS
See Also:
Constant Field Values

AGENT_UNSPECIFIED

public static final short AGENT_UNSPECIFIED
See Also:
Constant Field Values

TYPE_TAG

public static final int TYPE_TAG
See Also:
Constant Field Values

HOST_TUPLE_HOST_TAG

public static final int HOST_TUPLE_HOST_TAG
See Also:
Constant Field Values

HOST_ADDR_TAG

public static final int HOST_ADDR_TAG
See Also:
Constant Field Values

AGENT_ID_TAG

public static final int AGENT_ID_TAG
See Also:
Constant Field Values

TS_ID_TAG

public static final int TS_ID_TAG
See Also:
Constant Field Values

HOST

public static final java.lang.String HOST
See Also:
Constant Field Values

AGENT

public static final java.lang.String AGENT
See Also:
Constant Field Values

TS

public static final java.lang.String TS
See Also:
Constant Field Values

HOST_GONE

public static final java.lang.String HOST_GONE
See Also:
Constant Field Values

AGENT_GONE

public static final java.lang.String AGENT_GONE
See Also:
Constant Field Values

TS_GONE

public static final java.lang.String TS_GONE
See Also:
Constant Field Values

MAX_ROUNDS

public static final int MAX_ROUNDS
See Also:
Constant Field Values
Constructor Detail

LimeTSMgr

LimeTSMgr(java.lang.String name,
          boolean inTransaction)
Method Detail

newSeqNum

private long newSeqNum()
Returns a new sequence number.


run

public void run()
Specified by:
run in interface java.lang.Runnable

postOp

void postOp(LocalOpDescriptor opDesc)
Places operations into the INCOMMING_OPS_QUEUE queue. It then blocks the calling thread on the lock contained within the LocalOpDescriptor.


performOp

void performOp(OpDescriptor opDesc)
         throws lights.interfaces.TupleSpaceException,
                java.io.IOException
Throws:
lights.interfaces.TupleSpaceException
java.io.IOException

doWrite

private void doWrite(TupleOpDescriptor opDesc)
              throws lights.interfaces.TupleSpaceException
'doWrite' perform the local write operation or put the tuple in the outgoing queue

Parameters:
opDesc - the operation containing the tuple to be written, no result is given because an agent does not block on a write operation
Throws:
lights.interfaces.TupleSpaceException

doSys

private void doSys(TupleOpDescriptor opDesc)
            throws lights.interfaces.TupleSpaceException
Perform a probing read or take. When one of these operations is performed, the current field (CUR) of the tuple must indicate either a host or an agent. If CUR indicates a local operation, a probing take/read is performed locally. If CUR indicates a remote operation, the pendingUpon structure is used to generate an upon statement that is sent to the ONE appropriate destination host (based on CUR).

Parameters:
opDesc - the SYS_TAKE or SYS_READ operation (or group) descriptor
Throws:
lights.interfaces.TupleSpaceException

doWait

void doWait(TupleOpDescriptor opDesc)
      throws lights.interfaces.TupleSpaceException,
             java.io.IOException
Waiting operations can either be for a specific host or for any host. If a specific host is identified (either by giving an agent or a host) the operation is performed only on the identified host. If the host is local, the corresponding probe is done first. If the probe fails, an upon is generated that will return the tuple to the agent when the template is matched. If the host is not local, an upon is generated and sent remotely (to one or all hosts) that will return the result of the upon to the user in the case of a wait_to_read, and will issue a rem_sys_take in the case of a wait_to_take.

Parameters:
opDesc - the waiting operation to be performed
Throws:
lights.interfaces.TupleSpaceException
java.io.IOException

doInstReactsTo

private void doInstReactsTo(ReactionsOpDescriptor opDesc)

doInstUponListener

private void doInstUponListener(ReactionsOpDescriptor opDesc)
                         throws lights.interfaces.TupleSpaceException
When a set of upon reactions are to be installed, each individual reaction can be remote, local, or broadcast. All upons sent to a single host (remote and broadcast OR lcoal and broadcast) must be installed atomically at that host. THIS IS DIFFICULT because it means coordinating a broadcast with a unicast. See documentation for further description of options for implementation. Because this is a hard problem, we will ignore it for now, and allow only a single reaction to be installed at a time. Each event receives a sequence number and the corresponding reaction provided by the upon operation descriptor is stored in pendingUpon so that when the upon generates an event, the reaction can be executed. LATER: Every upon where the current field indicates either a host that is not present, or an agent that is not present in the system must be stored and checked on every engagement to see whether the current has now been satisfied. If so, it should be registered as part of the engagement. An array of RegisteredReaction is returned through the lock of the opDesc if the upon came from an agent. If the lock field is null, this indicates that the upon was generated by lime and no agent is locked waiting for the RegisteredReaction array.

Parameters:
opDesc - the description of the upons to be installed
Throws:
lights.interfaces.TupleSpaceException - if an error occurs

doRemoveReactsTo

private void doRemoveReactsTo(ReactionsOpDescriptor opDesc)

doRemoveUpon

private void doRemoveUpon(ReactionsOpDescriptor opDesc)
Uninstalling an array of upons has the same problem atomicity problmes as installing an array of reactions or upons. Because the upons can be spread across the system, we still need to provide guarantees of the atomicity

The open question is whether or not a partial uninstall of upons is acceptable. Since right now we are only uninstalling one at a time, this isn't an issue, but we will have to address this eventually.

Parameters:
opDesc - a value of type 'ReactionsOpDescriptor'

doUponEvent

private void doUponEvent(RemoteUponOpDescriptor opDesc)
                  throws lights.interfaces.TupleSpaceException
An UponEvent is a messages that arrives from a remote system when an upon fires. The remote system sends the result back to this host (the subscriber) where the sequence number is used to locate the specific upon from the pendingUpon structure.

if the upon is no longer registered, then the upon has been deregistered. What happened is the following: The remote system generated this uponEvent before the deregistration arrived. In this case, just drop the event.

Parameters:
opDesc - the description of the UponEvent
Throws:
lights.interfaces.TupleSpaceException - if an error occurs

doSysReply

void doSysReply(RemoteTupleOpDescriptor opDesc)
A SysReply message is the actual tuple being returned from the remote system. Unlike the UponEvent, it is not possible for the upon to be deregistered because there is at most one outstanding remote system take operation, and this is it returning. In other words, the registered reaction must be in pendingUpon

Parameters:
opDesc - the returned remote opearation descriptor, containing the tuple copy and sequence number

doRemSys

private void doRemSys(RemoteTupleOpDescriptor opDesc)
               throws lights.interfaces.TupleSpaceException
A read or take operation from a remote host is serviced and the result put into the outgoing queue to be returned to the agent that requested the operation in a SYS_REPLY (because by this point, whether the operation was a TAKE or READ doesn't matter.

Parameters:
opDesc - the remote opearation request
Throws:
lights.interfaces.TupleSpaceException - if an error occurs

doRemOutg

void doRemOutg(RemoteTupleOpDescriptor opDesc,
               boolean sendAck)
         throws lights.interfaces.TupleSpaceException
Put the tuple that comes from remotely into the tuple space. The agent should be present at this host, unless something goes wrong. In other words, the disengagement protocol should not allow an agent to leave a host if it has pending REM_OUTG events in the queue. This is something to address when we get to unannounced disconnection.

Parameters:
opDesc - the opearation containing the tuple to be written
sendAck - if this method is called from a transaction, the ack should not be sent, otherwise the ack should be sent.
Throws:
lights.interfaces.TupleSpaceException - if an error occurs

doRemOutgAck

private void doRemOutgAck(RemoteTupleOpDescriptor opDesc)

doInstRemUponListener

private void doInstRemUponListener(RemoteUponOpDescriptor opDesc)
                            throws lights.interfaces.TupleSpaceException
Throws:
lights.interfaces.TupleSpaceException

doRemoveRemUponListener

private void doRemoveRemUponListener(RemoteUponOpDescriptor opDesc)

generateRemoteSysReq

private void generateRemoteSysReq(TupleOpDescriptor opDesc,
                                  lights.interfaces.ITuple opTemplate,
                                  LimeServerID opDestination)
                           throws lights.interfaces.TupleSpaceException
Make the reaction to go into the pendingUpon structure, and put the remote system take or read opeartion into the outgoing queue. The only types of events that will be generated are REM_SYS_TAKE and REM_SYS_READ, based on the type of the opDesc. Now also REM_ING and REM_RDG

Parameters:
opDesc - a value of type 'TupleOpDescriptor'
opTemplate - the template of the tuple to be read or taken. Coule be taken from the opDesc, but since we most likely have alread made the method calls to extract this infromation by the time generateRemoteSysReq is made, why not pass it as a parameter?
opDestination - the ip address where the operation is to be sent
Throws:
lights.interfaces.TupleSpaceException - if an error occurs

readOrTakeTuple

lights.interfaces.ITuple readOrTakeTuple(short type,
                                         lights.interfaces.ITuple template)
read or take a tuple (based on the type passed) from the tuple space of this manager

Parameters:
type - WAIT_TO_READ, SYS_READ, REM_SYS_READ, or the corresponding TAKE operations
template - the template to mbe matched
Returns:
the found tuple, or null if no tuple is found

takeTupleSpaceProjection

static lights.interfaces.ITuple[] takeTupleSpaceProjection(lights.interfaces.ITupleSpace ts,
                                                           AgentID[] agents,
                                                           int index)
                                                    throws TupleSpaceEngineException,
                                                           lights.interfaces.TupleSpaceException
Returns the set of tuples that represent a given projection of the tuple space. The tuples are actually withdrawn from the tuple space.

Parameters:
ts - the tuple space to be searched for.
agents - the array of agents to look for.
index - the field index that must be matched.
Returns:
the array of tuples that satisfy the match.
Throws:
TupleSpaceEngineException(tse)
TupleSpaceEngineException
lights.interfaces.TupleSpaceException

removeFirstElement

private OpDescriptor removeFirstElement(java.util.Vector v)

getTransactionLock

Lock getTransactionLock()

mergePrivateWithPublic

lights.interfaces.ITuple[] mergePrivateWithPublic(LimeTupleSpace lts)
                                            throws TupleSpaceEngineException
Called from the Transaction manager to merge the upons/reactions of a private tuple space into the public space, and to return the tuples which are to be handed to the reactor when the transaction is complete

Parameters:
lts - the previously public tuple space to be made public
Returns:
The tuples of the private tuple space
Throws:
TupleSpaceEngineException

mergeMisplaced

void mergeMisplaced(java.util.Vector tuples,
                    java.util.Vector upons)
              throws TupleSpaceEngineException
Throws:
TupleSpaceEngineException

getRemRegReactByAgent

RegisteredReaction[] getRemRegReactByAgent(AgentID subscriber)

printMisplacedTuples

void printMisplacedTuples(java.util.Vector t)
Used for debugging purposes.


getOpType

static java.lang.String getOpType(short type)
Used for debugging purposes.