# Class SimpleCoordinator

java.lang.Object
org.apache.catalina.tribes.group.ChannelInterceptorBase
org.apache.catalina.tribes.group.interceptors.SimpleCoordinator

All Implemented Interfaces:
  `ChannelInterceptor, Heartbeat, MembershipListener`

public class SimpleCoordinator extends ChannelInterceptorBase
A dinky coordinator, just uses a sorted version of the member array.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface ChannelInterceptor

  `ChannelInterceptor.InterceptorEvent`

- ## Field Summary

  ### Fields inherited from class ChannelInterceptorBase

  `optionFlag`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SimpleCoordinator()`
  Creates a new SimpleCoordinator instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Member`
  `getCoordinator()`
  Returns the current coordinator member (first member in the sorted view).
  `Member[]`
  `getView()`
  Returns the current sorted view of cluster members.
  `boolean`
  `isCoordinator()`
  Returns whether this member is the current coordinator.
  `void`
  `memberAdded(Member member)`
  A member was added to the group
  `void`
  `memberDisappeared(Member member)`
  A member was removed from the group
  If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data
  `void`
  `start(int svc)`
  Starts up the channel.
  `void`
  `stop(int svc)`
  Shuts down the channel.
  `protected void`
  `viewChange(Member[] view)`
  Override to receive view changes.

  ### Methods inherited from class ChannelInterceptorBase

  `fireInterceptorEvent, getChannel, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, heartbeat, messageReceived, okToProcess, sendMessage, setChannel, setNext, setOptionFlag, setPrevious`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### SimpleCoordinator

    public SimpleCoordinator()
    Creates a new SimpleCoordinator instance.

- ## Method Details

  - ### memberAdded

    public void memberAdded(Member member)
    Description copied from interface: `MembershipListener`
    A member was added to the group
    Specified by:
      `memberAdded` in interface `MembershipListener`
    Overrides:
      `memberAdded` in class `ChannelInterceptorBase`
    Parameters:
      `member` - Member - the member that was added

  - ### memberDisappeared

    public void memberDisappeared(Member member)
    Description copied from interface: `MembershipListener`
    A member was removed from the group
    If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data
    Specified by:
      `memberDisappeared` in interface `MembershipListener`
    Overrides:
      `memberDisappeared` in class `ChannelInterceptorBase`
    Parameters:
      `member` - Member
    See Also:
      - `Member.SHUTDOWN_PAYLOAD`

  - ### viewChange

    protected void viewChange(Member[] view)
    Override to receive view changes.
    Parameters:
      `view` - The members array

  - ### start

    public void start(int svc) throws ChannelException
    Description copied from interface: `ChannelInterceptor`
    Starts up the channel. This can be called multiple times for individual services to start The svc parameter can be the logical or value of any constants
    Specified by:
      `start` in interface `ChannelInterceptor`
    Overrides:
      `start` in class `ChannelInterceptorBase`
    Parameters:
      `svc` - one of:
      - Channel.DEFAULT - will start all services
      - Channel.MBR_RX_SEQ - starts the membership receiver
      - Channel.MBR_TX_SEQ - starts the membership broadcaster
      - Channel.SND_TX_SEQ - starts the replication transmitter
      - Channel.SND_RX_SEQ - starts the replication receiver
    Throws:
      `ChannelException` - if a startup error occurs or the service is already started.
    See Also:
      - `Channel`

  - ### stop

    public void stop(int svc) throws ChannelException
    Description copied from interface: `ChannelInterceptor`
    Shuts down the channel. This can be called multiple times for individual services to shut down. The svc parameter can be the logical or value of any constants
    Specified by:
      `stop` in interface `ChannelInterceptor`
    Overrides:
      `stop` in class `ChannelInterceptorBase`
    Parameters:
      `svc` - one of:
      - Channel.DEFAULT - will shut down all services
      - Channel.MBR_RX_SEQ - stops the membership receiver
      - Channel.MBR_TX_SEQ - stops the membership broadcaster
      - Channel.SND_TX_SEQ - stops the replication transmitter
      - Channel.SND_RX_SEQ - stops the replication receiver
    Throws:
      `ChannelException` - if a shutdown error occurs or the service is already stopped.
    See Also:
      - `Channel`

  - ### getView

    public Member[] getView()
    Returns the current sorted view of cluster members.
    Returns:
      the current member view, or `null` if not yet established

  - ### getCoordinator

    public Member getCoordinator()
    Returns the current coordinator member (first member in the sorted view).
    Returns:
      the coordinator member, or `null` if no view is established

  - ### isCoordinator

    public boolean isCoordinator()
    Returns whether this member is the current coordinator.
    Returns:
      `true` if this member is the coordinator