Package org.apache.catalina.tribes.group

## 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 org.apache.catalina.tribes.ChannelInterceptor

      `ChannelInterceptor.InterceptorEvent`

  - ### Field Summary

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

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ChannelInterceptorBase()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `fireInterceptorEvent​(ChannelInterceptor.InterceptorEvent event)` |
    `Channel` | `getChannel()` | Return the channel that is related to this interceptor
    `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
    `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.
    `ChannelInterceptor` | `getPrevious()` | Retrieve the previous interceptor in the list
    `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.
    `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
    `void` | `setNext​(ChannelInterceptor next)` | Set the next interceptor in the list of interceptors
    `void` | `setOptionFlag​(int optionFlag)` | Sets the option flag
    `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 java.lang.Object

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

- - ### Field Detail

    - #### optionFlag

          protected int optionFlag

  - ### Constructor Detail

    - #### ChannelInterceptorBase

          public ChannelInterceptorBase()

  - ### Method Detail

    - #### 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()

      has members
      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()

      Get all current cluster members
      Specified by:
        `getMembers` in interface `ChannelInterceptor`
      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`
      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`
      Parameters:
        `incAlive` - boolean
      Returns:
        Member
      See Also:
        `Channel.getLocalMember(boolean)`

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

    - #### fireInterceptorEvent

          public void fireInterceptorEvent​(ChannelInterceptor.InterceptorEvent event)

      Specified by:
        `fireInterceptorEvent` in interface `ChannelInterceptor`

    - #### getChannel

          public Channel getChannel()

      Return the channel that is related to this interceptor
      Specified by:
        `getChannel` in interface `ChannelInterceptor`
      Returns:
        Channel

    - #### setChannel

          public void setChannel​(Channel channel)

      Set the channel that is related to this interceptor
      Specified by:
        `setChannel` in interface `ChannelInterceptor`
      Parameters:
        `channel` - The channel