org.jgroups.protocols.pbcast

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.29 $
Author:
Bela Ban

Field Summary

Fields inherited from class org.jgroups.protocols.pbcast.GmsImpl

gms, log

Constructor Summary

ClientGmsImpl(GMS g)

Method Summary

void
handleJoin(Address mbr)
void
handleJoinResponse(JoinRsp join_rsp)
void
handleLeave(Address mbr, boolean suspected)
Returns false.
void
handleLeaveResponse()
void
handleSuspect(Address mbr)
Returns immediately.
boolean
handleUpEvent(Event evt)
void
handleViewChange(View new_view, Digest digest)
Does nothing.
void
init()
void
join(Address mbr)
Joins this process to a group.
void
leave(Address mbr)
void
suspect(Address mbr)
void
unsuspect(Address mbr)

Methods inherited from class org.jgroups.protocols.pbcast.GmsImpl

handleDownEvent, handleExit, handleJoin, handleJoinResponse, handleLeave, handleLeaveResponse, handleMergeCancelled, handleMergeRequest, handleMergeResponse, handleMergeView, handleSuspect, handleUpEvent, handleViewChange, iWouldBeCoordinator, init, join, leave, merge, sendMergeRejectedResponse, start, stop, suspect, unsuspect, wrongMethod

Constructor Details

ClientGmsImpl

public ClientGmsImpl(GMS g)

Method Details

handleJoin

public void handleJoin(Address mbr)
Overrides:
handleJoin in interface GmsImpl

handleJoinResponse

public void handleJoinResponse(JoinRsp join_rsp)
Overrides:
handleJoinResponse in interface GmsImpl

handleLeave

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

handleLeaveResponse

public void handleLeaveResponse()
Overrides:
handleLeaveResponse in interface GmsImpl

handleSuspect

public void handleSuspect(Address mbr)
Returns immediately. Clients don't handle suspect() requests
Overrides:
handleSuspect in interface GmsImpl

handleUpEvent

public boolean handleUpEvent(Event evt)
Overrides:
handleUpEvent in interface GmsImpl

handleViewChange

public void handleViewChange(View new_view,
                             Digest digest)
Does nothing. Discards all views while still client.
Overrides:
handleViewChange in interface GmsImpl

init

public void init()
            throws Exception
Overrides:
init in interface GmsImpl

join

public void join(Address mbr)
Joins this process to a group. Determines the coordinator and sends a unicast handleJoin() message to it. The coordinator returns a JoinRsp and then broadcasts the new view, which contains a message digest and the current membership (including the joiner). The joiner is then supposed to install the new view and the digest and starts accepting mcast messages. Previous mcast messages were discarded (this is done in PBCAST).

If successful, 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.

Overrides:
join in interface GmsImpl
Parameters:
mbr - Our own address (assigned through SET_LOCAL_ADDRESS)

leave

public void leave(Address mbr)
Overrides:
leave in interface GmsImpl

suspect

public void suspect(Address mbr)
Overrides:
suspect in interface GmsImpl

unsuspect

public void unsuspect(Address mbr)
Overrides:
unsuspect in interface GmsImpl

Copyright B) 1998-2005 Bela Ban. All Rights Reserved.