Package org.jgroups.util
Class MutableDigest
- java.lang.Object
-
- org.jgroups.util.Digest
-
- org.jgroups.util.MutableDigest
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,Streamable
public class MutableDigest extends Digest
A mutable version of Digest (which is immutable- Version:
- $Id: MutableDigest.java,v 1.6 2007/05/29 10:10:47 belaban Exp $
- Author:
- Bela Ban
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.jgroups.util.Digest
Digest.Entry
-
-
Field Summary
-
Fields inherited from class org.jgroups.util.Digest
EMPTY_DIGEST, log, senders
-
-
Constructor Summary
Constructors Constructor Description MutableDigest()
Used for externalizationMutableDigest(int size)
MutableDigest(java.util.Map<Address,Digest.Entry> map)
MutableDigest(Digest digest)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Address sender, long low_seqno, long highest_delivered_seqno)
void
add(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
void
add(Digest digest)
void
clear()
java.util.Map<Address,Digest.Entry>
getSenders()
Returns an unmodifiable map, so modifications will result in exceptionsvoid
incrementHighestDeliveredSeqno(Address sender)
Increments the sender's high_seqno by 1.void
merge(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
Similar to add(), but if the sender already exists, its seqnos will be modified (no new entry) as follows: this.low_seqno=min(this.low_seqno, low_seqno) this.highest_delivered_seqno=max(this.highest_delivered_seqno, highest_delivered_seqno) this.highest_received_seqno=max(this.highest_received_seqno, highest_received_seqno) If the sender doesn not exist, a new entry will be added (provided there is enough space)void
merge(Digest digest)
Adds a digest to this digest.void
replace(Digest d)
void
resetAt(Address sender)
Resets the seqnos for the sender at 'index' to 0.boolean
seal()
Seals the instance against modificationsboolean
set(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
void
setHighestDeliveredAndSeenSeqnos(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
-
Methods inherited from class org.jgroups.util.Digest
contains, copy, difference, equals, get, highestDeliveredSeqnoAt, highestReceivedSeqnoAt, highestSequence, isGreaterThanOrEqual, lowSeqnoAt, printHighestDeliveredSeqnos, printHighestReceivedSeqnos, readExternal, readFrom, sameSenders, serializedSize, size, toString, writeExternal, writeTo
-
-
-
-
Constructor Detail
-
MutableDigest
public MutableDigest()
Used for externalization
-
MutableDigest
public MutableDigest(int size)
-
MutableDigest
public MutableDigest(java.util.Map<Address,Digest.Entry> map)
-
MutableDigest
public MutableDigest(Digest digest)
-
-
Method Detail
-
getSenders
public java.util.Map<Address,Digest.Entry> getSenders()
Description copied from class:Digest
Returns an unmodifiable map, so modifications will result in exceptions- Overrides:
getSenders
in classDigest
-
add
public void add(Address sender, long low_seqno, long highest_delivered_seqno)
-
add
public void add(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
-
add
public void add(Digest digest)
-
replace
public void replace(Digest d)
-
set
public boolean set(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
-
merge
public void merge(Digest digest)
Adds a digest to this digest. This digest must have enough space to add the other digest; otherwise an error message will be written. For each sender in the other digest, the merge() method will be called.
-
merge
public void merge(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
Similar to add(), but if the sender already exists, its seqnos will be modified (no new entry) as follows:- this.low_seqno=min(this.low_seqno, low_seqno)
- this.highest_delivered_seqno=max(this.highest_delivered_seqno, highest_delivered_seqno)
- this.highest_received_seqno=max(this.highest_received_seqno, highest_received_seqno)
-
incrementHighestDeliveredSeqno
public void incrementHighestDeliveredSeqno(Address sender)
Increments the sender's high_seqno by 1.
-
resetAt
public void resetAt(Address sender)
Resets the seqnos for the sender at 'index' to 0. This happens when a member has left the group, but it is still in the digest. Resetting its seqnos ensures that no-one will request a message retransmission from the dead member.
-
clear
public void clear()
-
setHighestDeliveredAndSeenSeqnos
public void setHighestDeliveredAndSeenSeqnos(Address sender, long low_seqno, long highest_delivered_seqno, long highest_received_seqno)
-
seal
public boolean seal()
Seals the instance against modifications
-
-