org.jgroups.protocols

Class ClientGmsImpl

public class ClientGmsImpl extends GmsImpl

Client part of GMS. Whenever a new member wants to join a group, it starts in the CLIENT role. No multicasts to the group will be received and processed until the member has been joined and turned into a SERVER (either coordinator or participant, mostly just participant). This class only implements Join (called by clients who want to join a certain group, and ViewChange which is called by the coordinator that was contacted by this client, to tell the client what its initial membership is.

Version: $Revision: 1.11 $

Author: Bela Ban

Constructor Summary
ClientGmsImpl(GMS g)
Method Summary
booleanhandleJoin(Address mbr)
voidhandleLeave(Address mbr, boolean suspected)
Returns false.
ViewhandleMerge(ViewId other_view, Vector other_members)
Returns immediately.
voidhandleSuspect(Address mbr)
Returns immediately.
booleanhandleUpEvent(Event evt)
voidhandleViewChange(ViewId new_view, Vector mems)
Install the first view in which we are a member.
voidinit()
voidjoin(Address mbr)
Will generate a CONNECT_OK event.
voidleave(Address mbr)
voidmerge(Vector other_coords)
voidsuspect(Address mbr)

Constructor Detail

ClientGmsImpl

public ClientGmsImpl(GMS g)

Method Detail

handleJoin

public boolean handleJoin(Address mbr)

handleLeave

public void handleLeave(Address mbr, boolean suspected)
Returns false. Clients don't handle leave() requests

handleMerge

public View handleMerge(ViewId other_view, Vector other_members)
Returns immediately. Clients don't handle merge() requests

handleSuspect

public void handleSuspect(Address mbr)
Returns immediately. Clients don't handle suspect() requests

handleUpEvent

public boolean handleUpEvent(Event evt)

handleViewChange

public void handleViewChange(ViewId new_view, Vector mems)
Install the first view in which we are a member. This is essentially a confirmation of our JOIN request (see join() above).

init

public void init()

join

public void join(Address mbr)
Will generate a CONNECT_OK event. Determines the coordinator and sends a unicast join() message to it. If successful, we wait for a ViewChange (can time out). If view change is received, impl is changed to an instance of ParticipantGmsImpl. Otherwise, we continue trying to send join() messages to the coordinator, until we succeed (or there is no member in the group. In this case, we create our own singleton group).

When GMS.disable_initial_coord is set to true, then we won't become coordinator on receiving an initial membership of 0, but instead will retry (forever) until we get an initial membership of > 0.

Parameters: mbr Our own address (assigned through SET_LOCAL_ADDRESS)

leave

public void leave(Address mbr)

merge

public void merge(Vector other_coords)

suspect

public void suspect(Address mbr)
Copyright ? 1998-2005 Bela Ban. All Rights Reserved.