org.jgroups.protocols.pbcast

## Class ParticipantGmsImpl

- java.lang.Object
- - org.jgroups.protocols.pbcast.GmsImpl
  - - org.jgroups.protocols.pbcast.ServerGmsImpl
    - - org.jgroups.protocols.pbcast.ParticipantGmsImpl

    public class ParticipantGmsImpl
    extends ServerGmsImpl

Author:
  Bela Ban

### Nested Class Summary

### Nested classes/interfaces inherited from class org.jgroups.protocols.pbcast.GmsImpl

`GmsImpl.Request`

### Field Summary

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

`gms, log, merger`

### Constructor Summary

Constructors
Constructor and Description
`ParticipantGmsImpl(GMS g)`

### Method Summary

Methods
`void` `handleJoinResponse(JoinRsp join_rsp)` In case we get a different JOIN_RSP from a previous JOIN_REQ sent by us (as a client), we simply apply the new view if it is greater than ours
`void` `handleLeaveResponse()`
`void` `handleMembershipChange(java.util.Collection<GmsImpl.Request> requests)`
`void` `handleViewChange(View new_view, Digest digest)` If we are leaving, we have to wait for the view change (last msg in the current view) that excludes us before we can leave.
`void` `init()`
`void` `join(Address mbr, boolean useFlushIfPresent)`
`void` `joinWithStateTransfer(Address mbr, boolean useFlushIfPresent)`
`void` `leave(Address mbr)` Loop: determine coord.
`void` `suspect(Address mbr)`
`void` `unsuspect(Address mbr)` Removes previously suspected member from list of currently suspected members

### Methods inherited from class org.jgroups.protocols.pbcast.ServerGmsImpl

`handleDigestResponse, handleMergeRequest, handleMergeView`

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

`handleMergeCancelled, handleMergeResponse, iWouldBeCoordinator, merge, sendMergeRejectedResponse, start, stop, wrongMethod`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ParticipantGmsImpl

    public ParticipantGmsImpl(GMS g)

### Method Detail

#### init

    public void init()
              throws java.lang.Exception

Overrides:
  `init` in class `GmsImpl`
Throws:
  `java.lang.Exception`

#### join

    public void join(Address mbr,
            boolean useFlushIfPresent)

Specified by:
  `join` in class `GmsImpl`

#### joinWithStateTransfer

    public void joinWithStateTransfer(Address mbr,
                             boolean useFlushIfPresent)

Specified by:
  `joinWithStateTransfer` in class `GmsImpl`

#### leave

    public void leave(Address mbr)

Loop: determine coord. If coord is me --> handleLeave(). Else send handleLeave() to coord until success

Specified by:
  `leave` in class `GmsImpl`

#### handleJoinResponse

    public void handleJoinResponse(JoinRsp join_rsp)

In case we get a different JOIN_RSP from a previous JOIN_REQ sent by us (as a client), we simply apply the new view if it is greater than ours

Overrides:
  `handleJoinResponse` in class `GmsImpl`
Parameters:
  `join_rsp` -

#### handleLeaveResponse

    public void handleLeaveResponse()

Overrides:
  `handleLeaveResponse` in class `GmsImpl`

#### suspect

    public void suspect(Address mbr)

Overrides:
  `suspect` in class `GmsImpl`

#### unsuspect

    public void unsuspect(Address mbr)

Removes previously suspected member from list of currently suspected members

Overrides:
  `unsuspect` in class `GmsImpl`

#### handleMembershipChange

    public void handleMembershipChange(java.util.Collection<GmsImpl.Request> requests)

Overrides:
  `handleMembershipChange` in class `GmsImpl`

#### handleViewChange

    public void handleViewChange(View new_view,
                        Digest digest)

If we are leaving, we have to wait for the view change (last msg in the current view) that excludes us before we can leave.

Overrides:
  `handleViewChange` in class `GmsImpl`
Parameters:
  `new_view` - The view to be installed
  `digest` - If view is a MergeView, digest contains the seqno digest of all members and has to be set by GMS