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 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.
  • Field Details

  • Constructor Details

    • ClientGmsImpl

      public ClientGmsImpl(GMS g)
  • Method Details

    • init

      public void init() throws Exception
      Overrides:
      init in class GmsImpl
      Throws:
      Exception
    • join

      public void join(Address address, boolean useFlushIfPresent)
      Specified by:
      join in class GmsImpl
    • joinWithStateTransfer

      public void joinWithStateTransfer(Address local_addr, boolean useFlushIfPresent)
      Specified by:
      joinWithStateTransfer in class GmsImpl
    • 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
    • leave

      public void leave()
      Specified by:
      leave in class GmsImpl
    • handleJoinResponse

      public void handleJoinResponse(JoinRsp join_rsp)
      Overrides:
      handleJoinResponse in class GmsImpl
    • 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)
    • installView

      private boolean installView(View new_view, Digest digest)
    • sendJoinMessage

      void sendJoinMessage(Address coord, Address mbr, boolean joinWithTransfer, boolean useFlushIfPresent)
    • getCoords

      private static List<Address> getCoords(Iterable<PingData> mbrs)
      Returns all members who are flagged as coordinator
    • becomeSingletonMember

      void becomeSingletonMember(Address mbr)