Class Digest

java.lang.Object
org.jgroups.util.Digest
All Implemented Interfaces:
Externalizable, Serializable, Streamable
Direct Known Subclasses:
MutableDigest

public class Digest extends Object implements Externalizable, Streamable
A message digest, which is used by the PBCAST layer for gossiping (also used by NAKACK for keeping track of current seqnos for all members). It contains pairs of senders and a range of seqnos (low and high), where each sender is associated with its highest and lowest seqnos seen so far. That is, the lowest seqno which was not yet garbage-collected and the highest that was seen so far and is deliverable (or was already delivered) to the application. A range of [0 - 0] means no messages have been received yet.

April 3 2001 (bela): Added high_seqnos_seen member. It is used to disseminate information about the last (highest) message M received from a sender P. Since we might be using a negative acknowledgment message numbering scheme, we would never know if the last message was lost. Therefore we periodically gossip and include the last message seqno. Members who haven't seen it (e.g. because msg was dropped) will request a retransmission. See DESIGN for details.

Version:
$Id: Digest.java,v 1.8.2.1 2008/01/22 10:01:17 belaban Exp $
Author:
Bela Ban
See Also:
  • Field Details

    • EMPTY_DIGEST

      public static final Digest EMPTY_DIGEST
    • senders

      protected final Map<Address,Digest.Entry> senders
      Map<Address, Entry>
    • log

      protected static final org.apache.commons.logging.Log log
  • Constructor Details

    • Digest

      public Digest()
      Used for externalization
    • Digest

      public Digest(int size)
    • Digest

      public Digest(Map<Address,Digest.Entry> map)
      Creates a new digest from an existing map by copying the keys and values from map
    • Digest

      public Digest(Digest d)
    • Digest

      public Digest(Address sender, long low, long highest_delivered, long highest_received)
    • Digest

      public Digest(Address sender, long low, long highest_delivered)
  • Method Details