ChannelInterceptorBase (Apache Tomcat 10.1.48 API Documentation)
Description: declaration: package: org.apache.catalina.tribes.group, class: ChannelInterceptorBase

# Class ChannelInterceptorBase

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

All Implemented Interfaces:
  `ChannelInterceptor, Heartbeat, MembershipListener`

Direct Known Subclasses:
  `ChannelCoordinator, DomainFilterInterceptor, EncryptInterceptor, FragmentationInterceptor, GroupChannel, GzipInterceptor, MessageDispatchInterceptor, NonBlockingCoordinator, OrderInterceptor, SimpleCoordinator, StaticMembershipInterceptor, TcpFailureDetector, TcpPingInterceptor, ThroughputInterceptor, TwoPhaseCommitInterceptor`

public abstract class ChannelInterceptorBase extends Object implements ChannelInterceptor
Abstract class for the interceptor base class.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface ChannelInterceptor

  `ChannelInterceptor.InterceptorEvent`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected int`
  `optionFlag`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ChannelInterceptorBase()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `fireInterceptorEvent(ChannelInterceptor.InterceptorEvent event)`
  Fire an event.
  `Channel`
  `getChannel()`
  Return the channel that is related to this interceptor
  `Member`
  `getLocalMember(boolean incAlive)`
  Intercepts the `Channel.getLocalMember(boolean)` method
  `Member`
  `getMember(Member mbr)`
  Intercepts the `Channel.getMember(Member)` method
  `Member[]`
  `getMembers()`
  Intercepts the `Channel.getMembers()` method
  `final ChannelInterceptor`
  `getNext()`
  Retrieve the next interceptor in the list
  `int`
  `getOptionFlag()`
  An interceptor can react to a message based on a set bit on the message options.
  `final ChannelInterceptor`
  `getPrevious()`
  Retrieve the previous interceptor in the list
  `boolean`
  `hasMembers()`
  Intercepts the `Channel.hasMembers()` method
  `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.
  `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.
  `boolean`
  `okToProcess(int messageFlags)`
  `void`
  `sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)`
  The `sendMessage` method is called when a message is being sent to one more destinations.
  `void`
  `setChannel(Channel channel)`
  Set the channel that is related to this interceptor
  `final void`
  `setNext(ChannelInterceptor next)`
  Set the next interceptor in the list of interceptors
  `void`
  `setOptionFlag(int optionFlag)`
  Sets the option flag
  `final void`
  `setPrevious(ChannelInterceptor previous)`
  Set the previous interceptor in the list
  `void`
  `start(int svc)`
  Starts up the channel.
  `void`
  `stop(int svc)`
  Shuts down the channel.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### optionFlag

    protected int optionFlag

- ## Constructor Details

  - ### ChannelInterceptorBase

    public ChannelInterceptorBase()

- ## Method Details

  - ### okToProcess

    public boolean okToProcess(int messageFlags)

  - ### setNext

    public final void setNext(ChannelInterceptor next)
    Description copied from interface: `ChannelInterceptor`
    Set the next interceptor in the list of interceptors
    Specified by:
      `setNext` in interface `ChannelInterceptor`
    Parameters:
      `next` - ChannelInterceptor

  - ### getNext

    public final ChannelInterceptor getNext()
    Description copied from interface: `ChannelInterceptor`
    Retrieve the next interceptor in the list
    Specified by:
      `getNext` in interface `ChannelInterceptor`
    Returns:
      ChannelInterceptor - returns the next interceptor in the list or null if no more interceptors exist

  - ### setPrevious

    public final void setPrevious(ChannelInterceptor previous)
    Description copied from interface: `ChannelInterceptor`
    Set the previous interceptor in the list
    Specified by:
      `setPrevious` in interface `ChannelInterceptor`
    Parameters:
      `previous` - ChannelInterceptor

  - ### setOptionFlag

    public void setOptionFlag(int optionFlag)
    Description copied from interface: `ChannelInterceptor`
    Sets the option flag
    Specified by:
      `setOptionFlag` in interface `ChannelInterceptor`
    Parameters:
      `optionFlag` - int
    See Also:
      - `ChannelInterceptor.getOptionFlag()`

  - ### getPrevious

    public final ChannelInterceptor getPrevious()
    Description copied from interface: `ChannelInterceptor`
    Retrieve the previous interceptor in the list
    Specified by:
      `getPrevious` in interface `ChannelInterceptor`
    Returns:
      ChannelInterceptor - returns the previous interceptor in the list or null if no more interceptors exist

  - ### getOptionFlag

    public int getOptionFlag()
    Description copied from interface: `ChannelInterceptor`
    An interceptor can react to a message based on a set bit on the message options. When a message is sent, the options can be retrieved from ChannelMessage.getOptions() and if the bit is set, this interceptor will react to it.

    A simple evaluation if an interceptor should react to the message would be:
    `boolean react = (getOptionFlag() == (getOptionFlag() & ChannelMessage.getOptions()));`
    The default option is 0, meaning there is no way for the application to trigger the interceptor. The interceptor itself will decide.

    Specified by:
      `getOptionFlag` in interface `ChannelInterceptor`
    Returns:
      int
    See Also:
      - `ChannelMessage.getOptions()`

  - ### sendMessage

    public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException
    Description copied from interface: `ChannelInterceptor`
    The `sendMessage` method is called when a message is being sent to one more destinations. The interceptor can modify any of the parameters and then pass on the message down the stack by invoking `getNext().sendMessage(destination,msg,payload)`.

    Alternatively the interceptor can stop the message from being sent by not invoking `getNext().sendMessage(destination,msg,payload)`.

    If the message is to be sent asynchronous the application can be notified of completion and errors by passing in an error handler attached to a payload object.

    The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten to simulate a message sent from another node.

    Specified by:
      `sendMessage` in interface `ChannelInterceptor`
    Parameters:
      `destination` - Member[] - the destination for this message
      `msg` - ChannelMessage - the message to be sent
      `payload` - InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
    Throws:
      `ChannelException` - if a serialization error happens.
    See Also:
      - `ErrorHandler`
      - `InterceptorPayload`

  - ### 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`
    Parameters:
      `msg` - ChannelMessage

  - ### memberAdded

    public void memberAdded(Member member)
    Description copied from interface: `MembershipListener`
    A member was added to the group
    Specified by:
      `memberAdded` in interface `MembershipListener`
    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`
    Parameters:
      `member` - Member
    See Also:
      - `Member.SHUTDOWN_PAYLOAD`

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

  - ### hasMembers

    public boolean hasMembers()
    Description copied from interface: `ChannelInterceptor`
    Intercepts the `Channel.hasMembers()` method
    Specified by:
      `hasMembers` in interface `ChannelInterceptor`
    Returns:
      boolean - if the channel has members in its membership group
    See Also:
      - `Channel.hasMembers()`

  - ### getMembers

    public Member[] getMembers()
    Description copied from interface: `ChannelInterceptor`
    Intercepts the `Channel.getMembers()` method
    Specified by:
      `getMembers` in interface `ChannelInterceptor`
    Returns:
      the members
    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`
    Parameters:
      `mbr` - Member
    Returns:
      Member - the actual member information, including stay alive
    See Also:
      - `Channel.getMember(Member)`

  - ### getLocalMember

    public Member getLocalMember(boolean incAlive)
    Description copied from interface: `ChannelInterceptor`
    Intercepts the `Channel.getLocalMember(boolean)` method
    Specified by:
      `getLocalMember` in interface `ChannelInterceptor`
    Parameters:
      `incAlive` - boolean
    Returns:
      the member that represents this node
    See Also:
      - `Channel.getLocalMember(boolean)`

  - ### 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`
    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`
    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 startup error occurs or the service is already started.
    See Also:
      - `Channel`

  - ### fireInterceptorEvent

    public void fireInterceptorEvent(ChannelInterceptor.InterceptorEvent event)
    Description copied from interface: `ChannelInterceptor`
    Fire an event.
    Specified by:
      `fireInterceptorEvent` in interface `ChannelInterceptor`
    Parameters:
      `event` - the event

  - ### getChannel

    public Channel getChannel()
    Description copied from interface: `ChannelInterceptor`
    Return the channel that is related to this interceptor
    Specified by:
      `getChannel` in interface `ChannelInterceptor`
    Returns:
      Channel

  - ### setChannel

    public void setChannel(Channel channel)
    Description copied from interface: `ChannelInterceptor`
    Set the channel that is related to this interceptor
    Specified by:
      `setChannel` in interface `ChannelInterceptor`
    Parameters:
      `channel` - The channel