## org.apache.cassandra.gms
Class Gossiper

    java.lang.Object
      org.apache.cassandra.gms.Gossiper

All Implemented Interfaces:
  IEndPointStateChangePublisher, IFailureDetectionEventListener

    public class Gossiper

extends java.lang.Object
implements IFailureDetectionEventListener, IEndPointStateChangePublisher

This module is responsible for Gossiping information for the local endpoint. This abstraction maintains the list of live and dead endpoints. Periodically i.e. every 1 second this module chooses a random node and initiates a round of Gossip with it. A round of Gossip involves 3 rounds of messaging. For instance if node A wants to initiate a round of Gossip with node B it starts off by sending node B a GossipDigestSynMessage. Node B on receipt of this message sends node A a GossipDigestAckMessage. On receipt of this message node A sends node B a GossipDigestAck2Message which completes a round of Gossip. This module as and when it hears one of the three above mentioned messages updates the Failure Detector with the liveness information.

Field Summary
`static Gossiper` `instance`
`static int` `intervalInMillis_`

Method Summary
`void` `addLocalApplicationState(java.lang.String key, ApplicationState appState)`
`int` `compareEndpointStartup(java.net.InetAddress addr1, java.net.InetAddress addr2)` determine which endpoint started up earlier
`void` `convict(java.net.InetAddress endpoint)` This method is part of IFailureDetectionEventListener interface.
`int` `getCurrentGenerationNumber(java.net.InetAddress endpoint)`
`java.util.Set<java.net.InetAddress>` `getLiveMembers()`
`java.util.Set<java.net.InetAddress>` `getUnreachableMembers()`
`boolean` `isKnownEndpoint(java.net.InetAddress endpoint)`
`void` `register(IEndPointStateChangeSubscriber subscriber)` Register with the Gossiper for EndPointState notifications
`void` `removeEndPoint(java.net.InetAddress endpoint)` Removes the endpoint completely from Gossip
`void` `start(java.net.InetAddress localEndPoint, int generationNbr)` Start the gossiper with the generation # retrieved from the System table
`void` `stop()`
`void` `unregister(IEndPointStateChangeSubscriber subscriber)` Unregister interest for state changes.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### intervalInMillis_

    public static final int intervalInMillis_

See Also:
  Constant Field Values

### instance

    public static final Gossiper instance

Method Detail

### register

    public void register(IEndPointStateChangeSubscriber subscriber)

  Register with the Gossiper for EndPointState notifications

  Specified by:
    `register` in interface `IEndPointStateChangePublisher`
  Parameters:
    `subscriber` - module which implements the IEndPointStateChangeSubscriber

### unregister

    public void unregister(IEndPointStateChangeSubscriber subscriber)

  Description copied from interface: `IEndPointStateChangePublisher`
  Unregister interest for state changes.

  Specified by:
    `unregister` in interface `IEndPointStateChangePublisher`
  Parameters:
    `subscriber` - module which implements the IEndPointStateChangeSubscriber

### getLiveMembers

    public java.util.Set<java.net.InetAddress> getLiveMembers()

### getUnreachableMembers

    public java.util.Set<java.net.InetAddress> getUnreachableMembers()

### convict

    public void convict(java.net.InetAddress endpoint)

  This method is part of IFailureDetectionEventListener interface. This is invoked by the Failure Detector when it convicts an end point. param @ endpoint end point that is convicted.

  Specified by:
    `convict` in interface `IFailureDetectionEventListener`
  Parameters:
    `endpoint` - endpoint to be convicted

### removeEndPoint

    public void removeEndPoint(java.net.InetAddress endpoint)

  Removes the endpoint completely from Gossip

### isKnownEndpoint

    public boolean isKnownEndpoint(java.net.InetAddress endpoint)

### getCurrentGenerationNumber

    public int getCurrentGenerationNumber(java.net.InetAddress endpoint)

### compareEndpointStartup

    public int compareEndpointStartup(java.net.InetAddress addr1,
                                      java.net.InetAddress addr2)

  determine which endpoint started up earlier

### start

    public void start(java.net.InetAddress localEndPoint,
                      int generationNbr)

  Start the gossiper with the generation # retrieved from the System table

### addLocalApplicationState

    public void addLocalApplicationState(java.lang.String key,
                                         ApplicationState appState)

### stop

    public void stop()

Copyright © 2010 The Apache Software Foundation