org.apache.catalina.tribes.group

## Class ChannelCoordinator

- java.lang.Object
- - org.apache.catalina.tribes.group.ChannelInterceptorBase
  - - org.apache.catalina.tribes.group.ChannelCoordinator

- All Implemented Interfaces:
    ChannelInterceptor, Heartbeat, MembershipListener, MessageListener

      public class ChannelCoordinator
      extends ChannelInterceptorBase
      implements MessageListener

  The channel coordinator object coordinates the membership service, the sender and the receiver. This is the last interceptor in the chain.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor

      `ChannelInterceptor.InterceptorEvent`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static StringManager` | `sm`

    - ### Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase

      `optionFlag`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ChannelCoordinator()`
    `ChannelCoordinator(ChannelReceiver receiver, ChannelSender sender, MembershipService service)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `accept(ChannelMessage msg)`
    `ChannelReceiver` | `getClusterReceiver()`
    `ChannelSender` | `getClusterSender()`
    `Member` | `getLocalMember(boolean incAlive)` Return the member that represents this node.
    `Member` | `getMember(Member mbr)` Intercepts the `Channel.getMember(Member)` method
    `Member[]` | `getMembers()` Get all current cluster members
    `MembershipService` | `getMembershipService()`
    `boolean` | `hasMembers()` has members
    `void` | `heartbeat()` The `heartbeat()` method gets invoked periodically to allow interceptors to clean up resources, time out object and perform actions that are unrelated to sending/receiving data.
    `protected void` | `internalStart(int svc)` Starts up the channel.
    `protected void` | `internalStop(int svc)` Shuts down the channel.
    `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` | `messageReceived(ChannelMessage msg)` the `messageReceived` is invoked when a message is received.
    `void` | `sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)` Send a message to one or more members in the cluster
    `void` | `setClusterReceiver(ChannelReceiver clusterReceiver)`
    `void` | `setClusterSender(ChannelSender clusterSender)`
    `void` | `setMembershipService(MembershipService membershipService)`
    `void` | `start(int svc)` Starts up the channel.
    `void` | `stop(int svc)` Shuts down the channel.

    - ### Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase

      `fireInterceptorEvent, getChannel, getNext, getOptionFlag, getPrevious, okToProcess, setChannel, setNext, setOptionFlag, setPrevious`

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

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

- - ### Field Detail

    - #### sm

          protected static final StringManager sm

  - ### Constructor Detail

    - #### ChannelCoordinator

          public ChannelCoordinator()

    - #### ChannelCoordinator

          public ChannelCoordinator(ChannelReceiver receiver,
                                    ChannelSender sender,
                                    MembershipService service)

  - ### Method Detail

    - #### sendMessage

          public void sendMessage(Member[] destination,
                                  ChannelMessage msg,
                                  InterceptorPayload payload)
                           throws ChannelException

      Send a message to one or more members in the cluster
      Specified by:
        `sendMessage` in interface `ChannelInterceptor`
      Overrides:
        `sendMessage` in class `ChannelInterceptorBase`
      Parameters:
        `destination` - Member[] - the destinations, null or zero length means all
        `msg` - ClusterMessage - the message to send
        `payload` - TBA
      Throws:
        `ChannelException` - if a serialization error happens.
      See Also:
        `ErrorHandler`, `InterceptorPayload`

    - #### start

          public void start(int svc)
                     throws ChannelException

      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` - int value of
        DEFAULT - will start all services
        MBR_RX_SEQ - starts the membership receiver
        MBR_TX_SEQ - starts the membership broadcaster
        SND_TX_SEQ - starts the replication transmitter
        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

      Shuts down the channel. This can be called multiple times for individual services to shutdown 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` - int value of
        DEFAULT - will shutdown all services
        MBR_RX_SEQ - stops the membership receiver
        MBR_TX_SEQ - stops the membership broadcaster
        SND_TX_SEQ - stops the replication transmitter
        SND_RX_SEQ - stops the replication receiver
      Throws:
        `ChannelException` - if a startup error occurs or the service is already started.
      See Also:
        `Channel`

    - #### internalStart

          protected void internalStart(int svc)
                                throws ChannelException

      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
      Parameters:
        `svc` - int value of
        DEFAULT - will start all services
        MBR_RX_SEQ - starts the membership receiver
        MBR_TX_SEQ - starts the membership broadcaster
        SND_TX_SEQ - starts the replication transmitter
        SND_RX_SEQ - starts the replication receiver
      Throws:
        `ChannelException` - if a startup error occurs or the service is already started.

    - #### internalStop

          protected void internalStop(int svc)
                               throws ChannelException

      Shuts down the channel. This can be called multiple times for individual services to shutdown The svc parameter can be the logical or value of any constants
      Parameters:
        `svc` - int value of
        DEFAULT - will shutdown all services
        MBR_RX_SEQ - starts the membership receiver
        MBR_TX_SEQ - starts the membership broadcaster
        SND_TX_SEQ - starts the replication transmitter
        SND_RX_SEQ - starts the replication receiver
      Throws:
        `ChannelException` - if a startup error occurs or the service is already started.

    - #### 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`

    - #### messageReceived

          public void messageReceived(ChannelMessage msg)

      Description copied from interface: `ChannelInterceptor`
      the `messageReceived` is invoked when a message is received. `ChannelMessage.getAddress()` is the sender, or the reply-to address if it has been overwritten.
      Specified by:
        `messageReceived` in interface `ChannelInterceptor`
      Specified by:
        `messageReceived` in interface `MessageListener`
      Overrides:
        `messageReceived` in class `ChannelInterceptorBase`
      Parameters:
        `msg` - ChannelMessage

    - #### accept

          public boolean accept(ChannelMessage msg)

      Specified by:
        `accept` in interface `MessageListener`

    - #### getClusterReceiver

          public ChannelReceiver getClusterReceiver()

    - #### getClusterSender

          public ChannelSender getClusterSender()

    - #### getMembershipService

          public MembershipService getMembershipService()

    - #### setClusterReceiver

          public void setClusterReceiver(ChannelReceiver clusterReceiver)

    - #### setClusterSender

          public void setClusterSender(ChannelSender clusterSender)

    - #### setMembershipService

          public void setMembershipService(MembershipService membershipService)

    - #### heartbeat

          public void heartbeat()

      Description copied from interface: `ChannelInterceptor`
      The `heartbeat()` method gets invoked periodically to allow interceptors to clean up resources, time out object and perform actions that are unrelated to sending/receiving data.
      Specified by:
        `heartbeat` in interface `ChannelInterceptor`
      Specified by:
        `heartbeat` in interface `Heartbeat`
      Overrides:
        `heartbeat` in class `ChannelInterceptorBase`

    - #### hasMembers

          public boolean hasMembers()

      has members
      Specified by:
        `hasMembers` in interface `ChannelInterceptor`
      Overrides:
        `hasMembers` in class `ChannelInterceptorBase`
      Returns:
        boolean - if the channel has members in its membership group
      See Also:
        `Channel.hasMembers()`

    - #### getMembers

          public Member[] getMembers()

      Get all current cluster members
      Specified by:
        `getMembers` in interface `ChannelInterceptor`
      Overrides:
        `getMembers` in class `ChannelInterceptorBase`
      Returns:
        all members or empty array
      See Also:
        `Channel.getMembers()`

    - #### getMember

          public Member getMember(Member mbr)

      Description copied from interface: `ChannelInterceptor`
      Intercepts the `Channel.getMember(Member)` method
      Specified by:
        `getMember` in interface `ChannelInterceptor`
      Overrides:
        `getMember` in class `ChannelInterceptorBase`
      Parameters:
        `mbr` - Member
      Returns:
        Member
      See Also:
        `Channel.getMember(Member)`

    - #### getLocalMember

          public Member getLocalMember(boolean incAlive)

      Return the member that represents this node.
      Specified by:
        `getLocalMember` in interface `ChannelInterceptor`
      Overrides:
        `getLocalMember` in class `ChannelInterceptorBase`
      Parameters:
        `incAlive` - boolean
      Returns:
        Member
      See Also:
        `Channel.getLocalMember(boolean)`

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.