Interface ChannelInterceptor

    • Method Detail

      • getOptionFlag

        int getOptionFlag()
        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.
        Returns:
        int
        See Also:
        ChannelMessage.getOptions()
      • setOptionFlag

        void setOptionFlag​(int flag)
        Sets the option flag
        Parameters:
        flag - int
        See Also:
        getOptionFlag()
      • setNext

        void setNext​(ChannelInterceptor next)
        Set the next interceptor in the list of interceptors
        Parameters:
        next - ChannelInterceptor
      • getNext

        ChannelInterceptor getNext()
        Retrieve the next interceptor in the list
        Returns:
        ChannelInterceptor - returns the next interceptor in the list or null if no more interceptors exist
      • setPrevious

        void setPrevious​(ChannelInterceptor previous)
        Set the previous interceptor in the list
        Parameters:
        previous - ChannelInterceptor
      • getPrevious

        ChannelInterceptor getPrevious()
        Retrieve the previous interceptor in the list
        Returns:
        ChannelInterceptor - returns the previous interceptor in the list or null if no more interceptors exist
      • sendMessage

        void sendMessage​(Member[] destination,
                         ChannelMessage msg,
                         InterceptorPayload payload)
                  throws ChannelException
        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.
        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

        void messageReceived​(ChannelMessage data)
        the messageReceived is invoked when a message is received. ChannelMessage.getAddress() is the sender, or the reply-to address if it has been overwritten.
        Parameters:
        data - ChannelMessage
      • heartbeat

        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.
        Specified by:
        heartbeat in interface Heartbeat
      • hasMembers

        boolean hasMembers()
        Intercepts the Channel.hasMembers() method
        Returns:
        boolean - if the channel has members in its membership group
        See Also:
        Channel.hasMembers()
      • getLocalMember

        Member getLocalMember​(boolean incAliveTime)
        Intercepts the Channel.getLocalMember(boolean) method
        Parameters:
        incAliveTime - boolean
        Returns:
        Member
        See Also:
        Channel.getLocalMember(boolean)
      • getMember

        Member getMember​(Member mbr)
        Intercepts the Channel.getMember(Member) method
        Parameters:
        mbr - Member
        Returns:
        Member - the actual member information, including stay alive
        See Also:
        Channel.getMember(Member)
      • start

        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
        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:
        Channel
      • stop

        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
        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:
        Channel
      • getChannel

        Channel getChannel()
        Return the channel that is related to this interceptor
        Returns:
        Channel
      • setChannel

        void setChannel​(Channel channel)
        Set the channel that is related to this interceptor
        Parameters:
        channel - The channel