All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class JavaGroups.JavaStack.Protocols.STABLE

java.lang.Object
   |
   +----JavaGroups.JavaStack.Protocol
           |
           +----JavaGroups.JavaStack.MessageProtocol
                   |
                   +----JavaGroups.JavaStack.RpcProtocol
                           |
                           +----JavaGroups.JavaStack.Protocols.STABLE

public class STABLE
extends RpcProtocol
implements Runnable
Computes the broadcast messages that are stable, i.e. have been received by all members. Sends STABLE events up te stack when this is the case. Uses a probabilistic scheme to do so, as described in "GSGC: An Efficient Gossip-Style Garbage Collection Scheme for Scalable Reliable Multicast".

The only difference is that instead of using counters for an estimation of messages received from each member, we retrieve this actual information from the NAKACK layer (which must be present for the STABLE protocol to work).


Constructor Index

 o STABLE()

Method Index

 o GetName()
 o Gossip(ViewId, long, long[], boolean[], Object)
Contains the highest sequence numbers as seen by sender
 o HandleDownEvent(Event)
Callback.
 o HandleUpEvent(Event)
Callback.
 o RequiredUpServices()
List of events that are required to be answered by some layer above.
 o run()
 o SetProperties(Properties)
Configures the protocol initially.
 o Stability(ViewId, long, long[], Object)
Contains the highest message sequence numbers (for each member) that can safely be deleted (because they have been seen by all members).

Constructors

 o STABLE
 public STABLE()

Methods

 o GetName
 public String GetName()
Overrides:
GetName in class RpcProtocol
 o RequiredUpServices
 public Vector RequiredUpServices()
List of events that are required to be answered by some layer above.

Overrides:
RequiredUpServices in class Protocol
 o SetProperties
 public boolean SetProperties(Properties props)
Configures the protocol initially.

Overrides:
SetProperties in class Protocol
 o Gossip
 public void Gossip(ViewId view_id,
                    long round,
                    long highest_seqnos[],
                    boolean heard[],
                    Object sender)
Contains the highest sequence numbers as seen by sender

Parameters:
view_id - The view ID in which the gossip was sent. Must be the same as ours, otherwise it is discarded
round - The round in which the gossip was sent
highest_seqnos - A vector with the highest sequence numbers as seen bu sender
heard - The sender's heard_from array. This allows us to minimize the gossip msgs for a given round as a member does not have to receive gossip msgs from each member, but members pass gossips they've received from others on in their own gossips. E.g. when a member P (of group {P,Q,R}) receives a gossip from R, its own gossip to Q might be {R,P}. Q, who hasn't received a gossip from R, will not need to receive it anymore as it is already sent by P. This simple scheme reduces the number of gossip messages needed.
sender - The sender of the gossip message (obviously :-))
 o Stability
 public void Stability(ViewId view_id,
                       long round,
                       long stability_vector[],
                       Object sender)
Contains the highest message sequence numbers (for each member) that can safely be deleted (because they have been seen by all members).

 o HandleUpEvent
 public boolean HandleUpEvent(Event evt)
Callback. Called by superclass when event may be handled.

Do not use PassUp in this method as the event is passed up by default by the superclass after this method returns !

Returns:
boolean Defaults to true. If false, event will not be passed up the stack.
Overrides:
HandleUpEvent in class RpcProtocol
 o HandleDownEvent
 public boolean HandleDownEvent(Event evt)
Callback. Called by superclass when event may be handled.

Do not use PassDown in this method as the event is passed down by default by the superclass after this method returns !

Returns:
boolean Defaults to true. If false, event will not be passed down the stack.
Overrides:
HandleDownEvent in class RpcProtocol
 o run
 public void run()

All Packages  Class Hierarchy  This Package  Previous  Next  Index