Interface ChannelInterceptor
- All Superinterfaces:
Heartbeat
,MembershipListener
- All Known Implementing Classes:
ChannelCoordinator
,ChannelInterceptorBase
,DomainFilterInterceptor
,EncryptInterceptor
,FragmentationInterceptor
,GroupChannel
,GzipInterceptor
,MessageDispatchInterceptor
,NonBlockingCoordinator
,OrderInterceptor
,SimpleCoordinator
,StaticMembershipInterceptor
,TcpFailureDetector
,TcpPingInterceptor
,ThroughputInterceptor
,TwoPhaseCommitInterceptor
Interceptors are tied together in a linked list.
- See Also:
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Fire an event.Return the channel that is related to this interceptorgetLocalMember
(boolean incAliveTime) Intercepts theChannel.getLocalMember(boolean)
methodIntercepts theChannel.getMember(Member)
methodMember[]
Intercepts theChannel.getMembers()
methodgetNext()
Retrieve the next interceptor in the listint
An interceptor can react to a message based on a set bit on the message options.Retrieve the previous interceptor in the listboolean
Intercepts theChannel.hasMembers()
methodvoid
Theheartbeat()
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
ThemessageReceived
is invoked when a message is received.void
sendMessage
(Member[] destination, ChannelMessage msg, InterceptorPayload payload) ThesendMessage
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 interceptorvoid
setNext
(ChannelInterceptor next) Set the next interceptor in the list of interceptorsvoid
setOptionFlag
(int flag) Sets the option flagvoid
setPrevious
(ChannelInterceptor previous) Set the previous interceptor in the listvoid
start
(int svc) Starts up the channel.void
stop
(int svc) Shuts down the channel.Methods inherited from interface org.apache.catalina.tribes.MembershipListener
memberAdded, memberDisappeared
-
Method Details
-
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:
-
setOptionFlag
void setOptionFlag(int flag) Sets the option flag- Parameters:
flag
- int- See Also:
-
setNext
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
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 ThesendMessage
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 invokinggetNext().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 messagemsg
- ChannelMessage - the message to be sentpayload
- InterceptorPayload - the payload, carrying an error handler and future useful data, can be null- Throws:
ChannelException
- if a serialization error happens.- See Also:
-
messageReceived
ThemessageReceived
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
-
hasMembers
boolean hasMembers()Intercepts theChannel.hasMembers()
method- Returns:
- boolean - if the channel has members in its membership group
- See Also:
-
getMembers
-
getLocalMember
Intercepts theChannel.getLocalMember(boolean)
method- Parameters:
incAliveTime
- boolean- Returns:
- the member that represents this node
- See Also:
-
getMember
-
start
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
- 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:
-
stop
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
- one 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
Fire an event.- Parameters:
event
- the event
-
getChannel
-
setChannel
Set the channel that is related to this interceptor- Parameters:
channel
- The channel
-