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).
-
STABLE()
-
-
GetName()
-
-
Gossip(ViewId, long, long[], boolean[], Object)
- Contains the highest sequence numbers as seen by
sender
-
HandleDownEvent(Event)
- Callback.
-
HandleUpEvent(Event)
- Callback.
-
RequiredUpServices()
- List of events that are required to be answered by some layer above.
-
run()
-
-
SetProperties(Properties)
- Configures the protocol initially.
-
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).
STABLE
public STABLE()
GetName
public String GetName()
- Overrides:
- GetName in class RpcProtocol
RequiredUpServices
public Vector RequiredUpServices()
- List of events that are required to be answered by some layer above.
- Overrides:
- RequiredUpServices in class Protocol
SetProperties
public boolean SetProperties(Properties props)
- Configures the protocol initially.
- Overrides:
- SetProperties in class Protocol
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 :-))
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).
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
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
run
public void run()
All Packages Class Hierarchy This Package Previous Next Index