## org.apache.catalina.tribes.tipis
Interface ReplicatedMapEntry

All Superinterfaces:
  java.io.Serializable

All Known Implementing Classes:
  DeltaSession

    public interface ReplicatedMapEntry

extends java.io.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
`void` `applyDiff(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
`long` `getVersion()` For accuracy checking, a serialized attribute can contain a version number This number increases as modifications are made to the data.
`boolean` `isDiffable()` If this returns true, the map will extract the diff using getDiff() Otherwise it will serialize the entire object.
`boolean` `isDirty()` Has the object changed since last replication and is not in a locked state
`void` `lock()` Lock during serialization
`void` `resetDiff()` Resets the current diff state and resets the dirty flag
`void` `setOwner(java.lang.Object owner)` This method is called after the object has been created on a remote map.
`void` `setVersion(long version)` Forces a certain version to a replicated map entry
`void` `unlock()` Unlock after serialization

Method Detail

### isDirty

    boolean isDirty()

  Has the object changed since last replication and is not in a locked state

  Returns:
    boolean

### isDiffable

    boolean isDiffable()

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

  Returns:
    boolean

### getDiff

    byte[] getDiff()
                   throws java.io.IOException

  Returns a diff and sets the dirty map to false

  Returns:
    byte[]
  Throws:
    `java.io.IOException`

### applyDiff

    void applyDiff(byte[] diff,
                   int offset,
                   int length)
                   throws java.io.IOException,
                          java.lang.ClassNotFoundException

  Applies a diff to an existing object.

  Parameters:
    `diff` - byte[]
    `offset` - int
    `length` - int
  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`

### resetDiff

    void resetDiff()

  Resets the current diff state and resets the dirty flag

### lock

    void lock()

  Lock during serialization

### unlock

    void unlock()

  Unlock after serialization

### setOwner

    void setOwner(java.lang.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

### getVersion

    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

### setVersion

    void setVersion(long version)

  Forces a certain version to a replicated map entry

  Parameters:
    `version` - long

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.