org.apache.catalina.tribes.tipis

Interface ReplicatedMapEntry

public interface ReplicatedMapEntry extends Serializable

For smarter replication, an object can implement this interface to replicate diffs
The replication logic will call the methods in the following order:
1. if ( entry.isDirty() )
try { 2. entry.lock();
3. byte[] diff = entry.getDiff();
4. entry.reset();
} finally {
5. entry.unlock();
}
}


When the data is deserialized the logic is called in the following order
1. ReplicatedMapEntry entry = (ReplicatedMapEntry)objectIn.readObject();
2. if ( isBackup(entry)||isPrimary(entry) ) entry.setOwner(owner);

Version: 1.0

Author: Filip Hanik

Method Summary
voidapplyDiff(byte[] diff, int offset, int length)
Applies a diff to an existing object.
byte[]getDiff()
Returns a diff and sets the dirty map to false
longgetVersion()
For accuracy checking, a serialized attribute can contain a version number This number increases as modifications are made to the data.
booleanisDiffable()
If this returns true, the map will extract the diff using getDiff() Otherwise it will serialize the entire object.
booleanisDirty()
Has the object changed since last replication and is not in a locked state
voidlock()
Lock during serialization
voidresetDiff()
Resets the current diff state and resets the dirty flag
voidsetOwner(Object owner)
This method is called after the object has been created on a remote map.
voidsetVersion(long version)
Forces a certain version to a replicated map entry
voidunlock()
Unlock after serialization

Method Detail

applyDiff

public void applyDiff(byte[] diff, int offset, int length)
Applies a diff to an existing object.

Parameters: diff byte[] offset int length int

Throws: IOException

getDiff

public byte[] getDiff()
Returns a diff and sets the dirty map to false

Returns: byte[]

Throws: IOException

getVersion

public long getVersion()
For accuracy checking, a serialized attribute can contain a version number This number increases as modifications are made to the data. The replicated map can use this to ensure accuracy on a periodic basis

Returns: long - the version number or -1 if the data is not versioned

isDiffable

public boolean isDiffable()
If this returns true, the map will extract the diff using getDiff() Otherwise it will serialize the entire object.

Returns: boolean

isDirty

public boolean isDirty()
Has the object changed since last replication and is not in a locked state

Returns: boolean

lock

public void lock()
Lock during serialization

resetDiff

public void resetDiff()
Resets the current diff state and resets the dirty flag

setOwner

public void setOwner(Object owner)
This method is called after the object has been created on a remote map. On this method, the object can initialize itself for any data that wasn't

Parameters: owner Object

setVersion

public void setVersion(long version)
Forces a certain version to a replicated map entry

Parameters: version long

unlock

public void unlock()
Unlock after serialization
Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.