Apache Tomcat 6.0.39

org.apache.catalina.tribes.group
Class ChannelInterceptorBase

java.lang.Object
  extended by org.apache.catalina.tribes.group.ChannelInterceptorBase
All Implemented Interfaces:
ChannelInterceptor, Heartbeat, MembershipListener
Direct Known Subclasses:
ChannelCoordinator, DomainFilterInterceptor, FragmentationInterceptor, GroupChannel, GzipInterceptor, MessageDispatchInterceptor, NonBlockingCoordinator, OrderInterceptor, SimpleCoordinator, StaticMembershipInterceptor, TcpFailureDetector, TcpPingInterceptor, ThroughputInterceptor, TwoPhaseCommitInterceptor

public abstract class ChannelInterceptorBase
extends java.lang.Object
implements ChannelInterceptor

Abstract class for the interceptor base class.

Version:
$Id: ChannelInterceptorBase.java 939515 2010-04-29 23:59:49Z kkolinko $
Author:
Filip Hanik

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor
ChannelInterceptor.InterceptorEvent
 
Field Summary
protected static Log log
           
protected  int optionFlag
           
 
Constructor Summary
ChannelInterceptorBase()
           
 
Method Summary
 boolean accept(ChannelMessage msg)
           
 void fireInterceptorEvent(ChannelInterceptor.InterceptorEvent event)
           
 Member getLocalMember(boolean incAlive)
          Return the member that represents this node.
 Member getMember(Member mbr)
          Intercepts the code>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 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

log

protected static Log log

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

accept

public boolean accept(ChannelMessage msg)

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 code>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

Apache Tomcat 6.0.39

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