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.
  • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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 - int value 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:
    • 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 shutdown The svc parameter can be the logical or value of any constants
      Specified by:
      stop in interface ChannelInterceptor
      Parameters:
      svc - int value of
      Channel.DEFAULT - will shutdown 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:
    • 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