public interface ReplicationReceiver
Modifier and Type | Method and Description |
---|---|
void |
commit(Xid transaction)
Commit the modifications to the locally replicated data and release all locks.
|
java.lang.Object |
receive(Xid transaction,
byte[] data,
byte[] lock_info,
long lock_acquisition_timeout,
long lock_lease_timeout,
boolean use_locks)
Receives data sent by a sender to all group members and applies update to locally replicated data.
|
void |
rollback(Xid transaction)
Discard all modifications and release all locks.
|
java.lang.Object receive(Xid transaction, byte[] data, byte[] lock_info, long lock_acquisition_timeout, long lock_lease_timeout, boolean use_locks) throws LockingException, UpdateException
ReplicationManager.send(org.jgroups.Address, byte[], boolean, long, org.jgroups.blocks.Xid, byte[], long, long, boolean)
call.transaction
- The transaction under which all locks will be acquired. Will be null if no locks are used (e.g.
use_locks
is null).data
- The data to be modified. In case of a database, this data would have to be stored in stable storage,
and would only be applied on a commit()
. In case of a distributed replicated in-memory
data structure, the update might be applied directly and the subsequent commit() or rollback() might
be ignored. Note that this argument may contain the resource to be locked; in this case the
lock_info
parameter might be null.lock_info
- Information about the resource(s) to be locked. Will be null if no locks are used (e.g.
use_locks
is null). Can also be null even if locks are used, e.g. when the resource(s)
to be locked are an implicit part of data
.lock_acquisition_timeout
- If locks are used, the number of milliseconds to wait for a lock to be acquired.
If this time elapses, a TimeoutException will be thrown. A value of 0 means
to wait forever. If use_locks
is false, this value is ignored.lock_lease_timeout
- The number of milliseconds to hold on to the lock, once it is acquired. A value of 0
means to never release the lock until commit() or rollback() are called.use_locks
- Whether to use locking or not. If this value is false, all lock-related arguments will be
ignored, regardless of whether they are non-null.ReplicationManager.send(org.jgroups.Address, byte[], boolean, long, org.jgroups.blocks.Xid, byte[], long, long, boolean)
and the receiver. If no special value should be returned, null can be returned. Note that in the
latter case, null is still treated as a response (in the synchronous call).LockingException
- Thrown when a lock on a resource cannot be acquiredUpdateException
- Thrown when the update fails (application semantics)void commit(Xid transaction)
void rollback(Xid transaction)
Copyright ? 1998-2006 Bela Ban. All Rights Reserved.