Package org.jgroups.protocols.pbcast
Class ClientGmsImpl
- java.lang.Object
-
- org.jgroups.protocols.pbcast.GmsImpl
-
- org.jgroups.protocols.pbcast.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 implementsJoin(called by clients who want to join a certain group, andViewChangewhich is called by the coordinator that was contacted by this client, to tell the client what its initial membership is.- Version:
- $Revision: 1.78 $
- Author:
- Bela Ban
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.jgroups.protocols.pbcast.GmsImpl
GmsImpl.Request
-
-
Constructor Summary
Constructors Constructor Description ClientGmsImpl(GMS g)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanfirstOfAllClients(Address joiner, Responses rsps)Handles the case where no coord responses were received.voidhandleJoinResponse(JoinRsp join_rsp)voidinit()protected booleaninstallViewIfValidJoinRsp(Promise<JoinRsp> join_promise, boolean block_for_rsp)protected booleanisJoinResponseValid(JoinRsp rsp)voidjoin(Address address, boolean useFlushIfPresent)protected voidjoinInternal(Address mbr, boolean joinWithStateTransfer, boolean useFlushIfPresent)Makes this process join a group.voidjoinWithStateTransfer(Address local_addr, boolean useFlushIfPresent)voidleave()-
Methods inherited from class org.jgroups.protocols.pbcast.GmsImpl
handleCoordLeave, handleDigestResponse, handleLeaveResponse, handleMembershipChange, handleMergeCancelled, handleMergeRequest, handleMergeResponse, handleMergeView, handleViewChange, merge, sendMergeRejectedResponse, start, stop, suspect, unsuspect, wrongMethod
-
-
-
-
Constructor Detail
-
ClientGmsImpl
public ClientGmsImpl(GMS g)
-
-
Method Detail
-
init
public void init() throws java.lang.Exception
-
join
public void join(Address address, boolean useFlushIfPresent)
-
joinWithStateTransfer
public void joinWithStateTransfer(Address local_addr, boolean useFlushIfPresent)
- Specified by:
joinWithStateTransferin classGmsImpl
-
joinInternal
protected void joinInternal(Address mbr, boolean joinWithStateTransfer, boolean useFlushIfPresent)
Makes this process join a group. Determines the coordinator and sends a JOIN request to it. The coordinator returns a JOIN response, then broadcasts the new view, which contains a message digest and the current membership (including the joiner). The joiner then installs the new view and the digest and starts accepting messages.
If successful, impl is changed to an instance of ParticipantGmsImpl. Otherwise, we continue trying to send JOIN requests to the coordinator, until we succeed (or there is no member in the group. In this case, we create our own singleton group).- Parameters:
mbr- Our own address
-
handleJoinResponse
public void handleJoinResponse(JoinRsp join_rsp)
- Overrides:
handleJoinResponsein classGmsImpl
-
installViewIfValidJoinRsp
protected boolean installViewIfValidJoinRsp(Promise<JoinRsp> join_promise, boolean block_for_rsp)
-
firstOfAllClients
protected boolean firstOfAllClients(Address joiner, Responses rsps)
Handles the case where no coord responses were received. Returns true if we became the coord (caller needs to terminate the join() call), or false when the caller needs to continue
-
isJoinResponseValid
protected boolean isJoinResponseValid(JoinRsp rsp)
-
-