jgroup.relacs.gm
Class MergingLayer

java.lang.Object
  extended by jgroup.relacs.gm.MergingLayer
All Implemented Interfaces:
Layer, Layer.FinalizeLayer, MembershipListener, MembershipService, MergingService, MulticastListener

public class MergingLayer
extends java.lang.Object
implements MergingService, MembershipService, MembershipListener, MulticastListener

This MergingLayer class implements the Jgroup state merging service. It intercepts and delays view change events so that the reconciliation protocol can complete before passing the view change on to application member.

Since:
0.7
Author:
Alberto Montresor, Hein Meling

Nested Class Summary
 
Nested classes/interfaces inherited from interface jgroup.core.Layer
Layer.FinalizeLayer
 
Nested classes/interfaces inherited from interface jgroup.core.Layer
Layer.FinalizeLayer
 
Nested classes/interfaces inherited from interface jgroup.core.MembershipListener
MembershipListener.AllowDuplicateViews
 
Method Summary
 void addListener(java.lang.Object listener)
          Add a listener object for this layer to provide upcalls to, in response to membership and merge events.
 void complete(java.lang.Object server)
          Post initialization of the MembershipLayer; invoked once all group manager layers have been constructed.
 java.lang.Object deliverObject(java.lang.Object msg, MemberId sender, int seqNo)
          Upcall that is invoked by Jgroup to deliver a message msg, corresponding to a single serialized object.
 java.lang.Object deliverStream(java.io.InputStream stream, MemberId sender, int seqNo)
          Upcall that is invoked by Jgroup to deliver a message msg, corresponding to an input stream from which the message may be read.
 int getGid()
          Returns the group identifier.
static MergingLayer getLayer(MembershipService membService, MulticastService mcastService)
           
 int getMemberIndex()
          Position index of this member in the array containing the local members of the current view.
 MemberTable getMemberTable()
          Returns a MemberTable helper object that will be notified of changes in the membership.
 MemberId getMyIdentifier()
          Returns the member identifier of the local member.
 java.lang.String getProtocolName()
          Returns a string naming the protocol implemented by this multicast listener.
 int getViewIndex()
          Position index of this member in the array containing the members of the current view.
 void hasLeft()
          Upcall that is invoked by Jgroup to acknowledge the fact that this object has left the group.
 boolean isJoining()
          Returns true if the GroupManager is in the process of joining some group.
 boolean isLeader()
          Returns true if the local member is the group leader.
 boolean isMember()
          Returns true if the GroupManager is member of some group.
 boolean isMemberOrJoining()
          Returns true if the GroupManager is member of some group or is in the process of joining some group.
 void join()
          Requests to join the default group associated with the Jgroup daemon.
 void join(int gid)
          Requests to join a group identified by groupId.
 void leave()
          Request to leave a group.
 int members()
          Return the number of members of this group.
 void prepareChange()
          Upcall that is invoked by the group membership service to notify that the current view is not valid any more, and the group membership service is trying to reach an agreement on a new view.
 void viewChange(View view)
          Upcall invoked on members implementing the MembershipListener interface, when a view change occurs.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getLayer

public static MergingLayer getLayer(MembershipService membService,
                                    MulticastService mcastService)
                             throws JgroupException
Throws:
JgroupException

addListener

public void addListener(java.lang.Object listener)
Add a listener object for this layer to provide upcalls to, in response to membership and merge events. The same listener object may listen to both types of events or just one of them.

Specified by:
addListener in interface Layer
Parameters:
listener - An Object representation of the listener interface. This will typically be cast to the appropriate listener interface type after checking the type with the instanceof operator.

complete

public void complete(java.lang.Object server)
              throws JgroupException
Post initialization of the MembershipLayer; invoked once all group manager layers have been constructed. This method is defined in the FinalizeLayer inherited through the MembershipSerivce.

Specified by:
complete in interface Layer.FinalizeLayer
Parameters:
server - The server using a layer implementing the FinalizeLayer interface.
Throws:
JgroupException - Thrown if the layer could not be completed.

join

public void join(int gid)
          throws JgroupException
Description copied from interface: MembershipService
Requests to join a group identified by groupId.

Specified by:
join in interface MembershipService
Parameters:
gid - Non-negative integer identifying the group.
Throws:
JgroupException - Raised if the membership service receives a request to join a group to which it is already a member.

join

public void join()
          throws JgroupException
Description copied from interface: MembershipService
Requests to join the default group associated with the Jgroup daemon.

Each Jgroup daemon has a default group. If a Jgroup daemon does not need to be shared by multiple groups, the application servers may simply join the default group without having to specify group identifiers.

Specified by:
join in interface MembershipService
Throws:
JgroupException - Raised if the membership service receives a request to join a group to which it is already a member.

leave

public void leave()
           throws JgroupException
Description copied from interface: MembershipService
Request to leave a group. Note that an object member may receive event notifications such as view installations for a group even after having requested to leave the group itself. However, the member will eventually leave the group. When this happens, its hasLeft method is invoked. After this invocation, the member will not receive any further event notification related to the group.

Specified by:
leave in interface MembershipService
Throws:
JgroupException - Rasied if the server is not member of any group, or is already leaving its current group.

isMember

public boolean isMember()
Description copied from interface: MembershipService
Returns true if the GroupManager is member of some group. Otherwise, false is returned.

Specified by:
isMember in interface MembershipService

isJoining

public boolean isJoining()
Description copied from interface: MembershipService
Returns true if the GroupManager is in the process of joining some group. Otherwise, false is returned.

Specified by:
isJoining in interface MembershipService

isMemberOrJoining

public boolean isMemberOrJoining()
Description copied from interface: MembershipService
Returns true if the GroupManager is member of some group or is in the process of joining some group. Otherwise, false is returned.

Specified by:
isMemberOrJoining in interface MembershipService

isLeader

public boolean isLeader()
Description copied from interface: MembershipService
Returns true if the local member is the group leader.

Specified by:
isLeader in interface MembershipService

getMyIdentifier

public MemberId getMyIdentifier()
Description copied from interface: MembershipService
Returns the member identifier of the local member.

Specified by:
getMyIdentifier in interface MembershipService

getGid

public int getGid()
Description copied from interface: MembershipService
Returns the group identifier.

Specified by:
getGid in interface MembershipService

getMemberTable

public MemberTable getMemberTable()
Description copied from interface: MembershipService
Returns a MemberTable helper object that will be notified of changes in the membership. This is used to provide application developers with additional information about members of their current view.

Specified by:
getMemberTable in interface MembershipService

members

public int members()
Description copied from interface: MembershipService
Return the number of members of this group.

Specified by:
members in interface MembershipService

getViewIndex

public int getViewIndex()
Description copied from interface: MembershipService
Position index of this member in the array containing the members of the current view.

Specified by:
getViewIndex in interface MembershipService

getMemberIndex

public int getMemberIndex()
Description copied from interface: MembershipService
Position index of this member in the array containing the local members of the current view.

Specified by:
getMemberIndex in interface MembershipService

viewChange

@MembershipListener.AllowDuplicateViews
public void viewChange(View view)
Description copied from interface: MembershipListener
Upcall invoked on members implementing the MembershipListener interface, when a view change occurs.

Specified by:
viewChange in interface MembershipListener
Parameters:
view - The new view that has been installed.
See Also:
MembershipService

hasLeft

public void hasLeft()
Description copied from interface: MembershipListener
Upcall that is invoked by Jgroup to acknowledge the fact that this object has left the group. This method is only invoked after the leave method has been invoked on the group membership service.

Specified by:
hasLeft in interface MembershipListener
See Also:
MembershipService

prepareChange

public void prepareChange()
Description copied from interface: MembershipListener
Upcall that is invoked by the group membership service to notify that the current view is not valid any more, and the group membership service is trying to reach an agreement on a new view.

Specified by:
prepareChange in interface MembershipListener
See Also:
MembershipService

getProtocolName

public java.lang.String getProtocolName()
Description copied from interface: MulticastListener
Returns a string naming the protocol implemented by this multicast listener.

Specified by:
getProtocolName in interface MulticastListener

deliverStream

public java.lang.Object deliverStream(java.io.InputStream stream,
                                      MemberId sender,
                                      int seqNo)
Description copied from interface: MulticastListener
Upcall that is invoked by Jgroup to deliver a message msg, corresponding to an input stream from which the message may be read.

Specified by:
deliverStream in interface MulticastListener
Parameters:
stream - the input stream from which the message can be read.
sender - the sender of the multicast message
seqNo - the sequence number of this multicast message
Returns:
an object that will be delivered to the invoker through the AckListener object specified when multicasting the message.

deliverObject

public java.lang.Object deliverObject(java.lang.Object msg,
                                      MemberId sender,
                                      int seqNo)
Description copied from interface: MulticastListener
Upcall that is invoked by Jgroup to deliver a message msg, corresponding to a single serialized object.

Specified by:
deliverObject in interface MulticastListener
Parameters:
msg - the object that was multicasted.
sender - the sender of the multicast message
seqNo - the sequence number of this multicast message
Returns:
an object that will be delivered to the invoker through the AckListener object specified when multicasting the message.


Copyright © 1998-2006 The Jgroup/ARM development team. All Rights Reserved.