|
Apache Tomcat 6.0.53 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.catalina.tribes.tipis.AbstractReplicatedMap<K,V>
public abstract class AbstractReplicatedMap<K,V>
Nested Class Summary | |
---|---|
static class |
AbstractReplicatedMap.MapEntry<K,V>
|
static class |
AbstractReplicatedMap.MapMessage
|
static interface |
AbstractReplicatedMap.MapOwner
|
Nested classes/interfaces inherited from interface java.util.Map |
---|
java.util.Map.Entry<K,V> |
Field Summary | |
---|---|
protected long |
accessTimeout
Since the map keeps internal membership this is the timeout for a ping message to be responded to If a remote map doesn't respond within this timeframe, its considered dead. |
protected Channel |
channel
Reference to the channel for sending messages |
protected int |
channelSendOptions
Our default send options |
protected int |
currentNode
The node we are currently backing up data to, this index will rotate on a round robin basis |
static int |
DEFAULT_INITIAL_CAPACITY
The default initial capacity - MUST be a power of two. |
static float |
DEFAULT_LOAD_FACTOR
The load factor used when none specified in constructor. |
protected java.lang.ClassLoader[] |
externalLoaders
External class loaders if serialization and deserialization is to be performed successfully. |
protected byte[] |
mapContextName
The Map context name makes this map unique, this allows us to have more than one map shared through one channel |
protected java.util.HashMap<Member,java.lang.Long> |
mapMembers
A list of members in our map |
protected java.lang.String |
mapname
Readable string of the mapContextName value |
protected AbstractReplicatedMap.MapOwner |
mapOwner
The owner of this map, ala a SessionManager for example |
protected RpcChannel |
rpcChannel
The RpcChannel to send RPC messages through |
protected long |
rpcTimeout
Timeout for RPC messages, how long we will wait for a reply |
protected java.lang.Object |
stateMutex
Simple lock object for transfers |
protected boolean |
stateTransferred
Has the state been transferred |
Constructor Summary | |
---|---|
AbstractReplicatedMap(AbstractReplicatedMap.MapOwner owner,
Channel channel,
long timeout,
java.lang.String mapContextName,
int initialCapacity,
float loadFactor,
int channelSendOptions,
java.lang.ClassLoader[] cls,
boolean terminate)
Creates a new map |
Method Summary | |
---|---|
boolean |
accept(java.io.Serializable msg,
Member sender)
Invoked by the channel to determine if the listener will process this message or not. |
void |
breakdown()
|
protected void |
broadcast(int msgtype,
boolean rpc)
Helper method to broadcast a message to all members in a channel |
void |
clear()
|
void |
clear(boolean notify)
|
java.lang.Object |
clone()
|
boolean |
containsKey(java.lang.Object key)
Returns true if the key has an entry in the map. |
boolean |
containsValue(java.lang.Object value)
|
java.util.Set<java.util.Map.Entry<K,V>> |
entrySet()
|
java.util.Set<java.util.Map.Entry<K,AbstractReplicatedMap.MapEntry<K,V>>> |
entrySetFull()
Returns the entire contents of the map Map.Entry.getValue() will return a LazyReplicatedMap.MapEntry object containing all the information about the object. |
boolean |
equals(java.lang.Object o)
|
Member[] |
excludeFromSet(Member[] mbrs,
Member[] set)
|
void |
finalize()
|
V |
get(java.lang.Object key)
|
long |
getAccessTimeout()
|
Channel |
getChannel()
|
int |
getChannelSendOptions()
|
java.lang.ClassLoader[] |
getExternalLoaders()
|
AbstractReplicatedMap.MapEntry<K,V> |
getInternal(java.lang.Object key)
|
byte[] |
getMapContextName()
|
Member[] |
getMapMembers()
|
Member[] |
getMapMembers(java.util.HashMap<Member,java.lang.Long> members)
|
Member[] |
getMapMembersExcl(Member[] exclude)
|
AbstractReplicatedMap.MapOwner |
getMapOwner()
|
int |
getNextBackupIndex()
|
Member |
getNextBackupNode()
|
RpcChannel |
getRpcChannel()
|
long |
getRpcTimeout()
|
protected abstract int |
getStateMessageType()
|
java.lang.Object |
getStateMutex()
|
int |
hashCode()
|
void |
heartbeat()
Heartbeat invokation for resources cleanup etc |
protected void |
init(AbstractReplicatedMap.MapOwner owner,
Channel channel,
java.lang.String mapContextName,
long timeout,
int channelSendOptions,
java.lang.ClassLoader[] cls,
boolean terminate)
Initializes the map by creating the RPC channel, registering itself as a channel listener This method is also responsible for initiating the state transfer |
boolean |
inSet(Member m,
Member[] set)
|
boolean |
isEmpty()
|
boolean |
isStateTransferred()
|
java.util.Set<K> |
keySet()
|
java.util.Set<K> |
keySetFull()
|
void |
leftOver(java.io.Serializable msg,
Member sender)
If the reply has already been sent to the requesting thread, the rpc callback can handle any data that comes in after the fact. |
void |
mapMemberAdded(Member member)
|
void |
memberAdded(Member member)
A member was added to the group |
protected void |
memberAlive(Member member)
We have received a member alive notification |
void |
memberDisappeared(Member member)
A member was removed from the group If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data |
void |
messageReceived(java.io.Serializable msg,
Member sender)
Receive a message from the channel |
protected void |
ping(long timeout)
Sends a ping out to all the members in the cluster, not just map members that this map is alive. |
protected void |
printMap(java.lang.String header)
|
protected abstract Member[] |
publishEntryInfo(java.lang.Object key,
java.lang.Object value)
|
V |
put(K key,
V value)
|
V |
put(K key,
V value,
boolean notify)
|
void |
putAll(java.util.Map<? extends K,? extends V> m)
Copies all values from one map to this instance |
V |
remove(java.lang.Object key)
Removes an object from this map, it will also remove it from |
V |
remove(java.lang.Object key,
boolean notify)
|
void |
replicate(boolean complete)
This can be invoked by a periodic thread to replicate out any changes. |
void |
replicate(java.lang.Object key,
boolean complete)
Replicates any changes to the object since the last time The object has to be primary, ie, if the object is a proxy or a backup, it will not be replicated |
java.io.Serializable |
replyRequest(java.io.Serializable msg,
Member sender)
TODO implement state transfer |
void |
setAccessTimeout(long accessTimeout)
|
void |
setChannelSendOptions(int channelSendOptions)
|
void |
setExternalLoaders(java.lang.ClassLoader[] externalLoaders)
|
void |
setMapOwner(AbstractReplicatedMap.MapOwner mapOwner)
|
int |
size()
|
int |
sizeFull()
|
void |
transferState()
|
java.util.Collection<V> |
values()
|
protected Member[] |
wrap(Member m)
Helper methods, wraps a single member in an array |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_INITIAL_CAPACITY
public static final float DEFAULT_LOAD_FACTOR
protected transient long rpcTimeout
protected transient Channel channel
protected transient RpcChannel rpcChannel
protected transient byte[] mapContextName
protected transient boolean stateTransferred
protected final transient java.lang.Object stateMutex
protected final transient java.util.HashMap<Member,java.lang.Long> mapMembers
protected transient int channelSendOptions
protected transient AbstractReplicatedMap.MapOwner mapOwner
protected transient java.lang.ClassLoader[] externalLoaders
protected transient int currentNode
protected transient long accessTimeout
protected transient java.lang.String mapname
Constructor Detail |
---|
public AbstractReplicatedMap(AbstractReplicatedMap.MapOwner owner, Channel channel, long timeout, java.lang.String mapContextName, int initialCapacity, float loadFactor, int channelSendOptions, java.lang.ClassLoader[] cls, boolean terminate)
channel
- The channel to use for communicationtimeout
- long - timeout for RPC messagsmapContextName
- String - unique name for this map, to allow multiple maps per channelinitialCapacity
- int - the size of this map, see HashMaploadFactor
- float - load factor, see HashMapcls
- - a list of classloaders to be used for deserialization of objects.terminate
- - Flag for whether to terminate this map that failed to start.Method Detail |
---|
protected abstract int getStateMessageType()
protected Member[] wrap(Member m)
m
- Member
protected void init(AbstractReplicatedMap.MapOwner owner, Channel channel, java.lang.String mapContextName, long timeout, int channelSendOptions, java.lang.ClassLoader[] cls, boolean terminate)
owner
- Objectchannel
- ChannelmapContextName
- Stringtimeout
- longchannelSendOptions
- intcls
- ClassLoader[]terminate
- - Flag for whether to terminate this map that failed to start.protected void ping(long timeout) throws ChannelException
timeout
- long
ChannelException
protected void memberAlive(Member member)
member
- Memberprotected void broadcast(int msgtype, boolean rpc) throws ChannelException
msgtype
- intrpc
- boolean
ChannelException
public void breakdown()
public void finalize()
finalize
in class java.lang.Object
public int hashCode()
hashCode
in interface java.util.Map<K,V>
hashCode
in interface ChannelListener
hashCode
in class java.lang.Object
Object.hashCode()
public boolean equals(java.lang.Object o)
equals
in interface java.util.Map<K,V>
equals
in interface ChannelListener
equals
in class java.lang.Object
o
- Object
Object.equals(Object)
public Member[] getMapMembers(java.util.HashMap<Member,java.lang.Long> members)
public Member[] getMapMembers()
public Member[] getMapMembersExcl(Member[] exclude)
public void replicate(java.lang.Object key, boolean complete)
complete
- - if set to true, the object is replicated to its backup
if set to false, only objects that implement ReplicatedMapEntry and the isDirty() returns true will
be replicatedpublic void replicate(boolean complete)
complete
- booleanpublic void transferState()
public java.io.Serializable replyRequest(java.io.Serializable msg, Member sender)
replyRequest
in interface RpcCallback
msg
- Serializable
public void leftOver(java.io.Serializable msg, Member sender)
leftOver
in interface RpcCallback
msg
- Serializablesender
- Memberpublic void messageReceived(java.io.Serializable msg, Member sender)
ChannelListener
messageReceived
in interface ChannelListener
msg
- Serializablesender
- - the source of the messagepublic boolean accept(java.io.Serializable msg, Member sender)
ChannelListener
accept
in interface ChannelListener
msg
- Serializablesender
- Member
public void mapMemberAdded(Member member)
public boolean inSet(Member m, Member[] set)
public Member[] excludeFromSet(Member[] mbrs, Member[] set)
public void memberAdded(Member member)
MembershipListener
memberAdded
in interface MembershipListener
member
- Member - the member that was addedpublic void memberDisappeared(Member member)
MembershipListener
memberDisappeared
in interface MembershipListener
member
- MemberMember.SHUTDOWN_PAYLOAD
public int getNextBackupIndex()
public Member getNextBackupNode()
protected abstract Member[] publishEntryInfo(java.lang.Object key, java.lang.Object value) throws ChannelException
ChannelException
public void heartbeat()
Heartbeat
heartbeat
in interface Heartbeat
public V remove(java.lang.Object key)
remove
in interface java.util.Map<K,V>
key
- Object
public V remove(java.lang.Object key, boolean notify)
public AbstractReplicatedMap.MapEntry<K,V> getInternal(java.lang.Object key)
public V get(java.lang.Object key)
get
in interface java.util.Map<K,V>
protected void printMap(java.lang.String header)
public boolean containsKey(java.lang.Object key)
get(key)
will make this entry primary for the group
containsKey
in interface java.util.Map<K,V>
key
- Object
public V put(K key, V value)
put
in interface java.util.Map<K,V>
public V put(K key, V value, boolean notify)
public void putAll(java.util.Map<? extends K,? extends V> m)
putAll
in interface java.util.Map<K,V>
m
- Mappublic void clear()
clear
in interface java.util.Map<K,V>
public void clear(boolean notify)
public boolean containsValue(java.lang.Object value)
containsValue
in interface java.util.Map<K,V>
public java.lang.Object clone()
clone
in class java.lang.Object
public java.util.Set<java.util.Map.Entry<K,AbstractReplicatedMap.MapEntry<K,V>>> entrySetFull()
public java.util.Set<K> keySetFull()
public int sizeFull()
public java.util.Set<java.util.Map.Entry<K,V>> entrySet()
entrySet
in interface java.util.Map<K,V>
public java.util.Set<K> keySet()
keySet
in interface java.util.Map<K,V>
public int size()
size
in interface java.util.Map<K,V>
public boolean isEmpty()
isEmpty
in interface java.util.Map<K,V>
public java.util.Collection<V> values()
values
in interface java.util.Map<K,V>
public Channel getChannel()
public byte[] getMapContextName()
public RpcChannel getRpcChannel()
public long getRpcTimeout()
public java.lang.Object getStateMutex()
public boolean isStateTransferred()
public AbstractReplicatedMap.MapOwner getMapOwner()
public java.lang.ClassLoader[] getExternalLoaders()
public int getChannelSendOptions()
public long getAccessTimeout()
public void setMapOwner(AbstractReplicatedMap.MapOwner mapOwner)
public void setExternalLoaders(java.lang.ClassLoader[] externalLoaders)
public void setChannelSendOptions(int channelSendOptions)
public void setAccessTimeout(long accessTimeout)
|
Apache Tomcat 6.0.53 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |