org.apache.catalina.tribes

Interface ChannelInterceptor

public interface ChannelInterceptor extends MembershipListener, Heartbeat

A ChannelInterceptor is an interceptor that intercepts messages and membership messages in the channel stack. This allows interceptors to modify the message or perform other actions when a message is sent or received.
Interceptors are tied together in a linked list.

Version: $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (Tue, 24 Oct 2006) $

Author: Filip Hanik

See Also: ChannelInterceptorBase

Nested Class Summary
static interfaceChannelInterceptor.InterceptorEvent
Method Summary
voidfireInterceptorEvent(ChannelInterceptor.InterceptorEvent event)
MembergetLocalMember(boolean incAliveTime)
Intercepts the code>Channel.getLocalMember(boolean) method
MembergetMember(Member mbr)
Intercepts the code>Channel.getMember(Member) method
Member[]getMembers()
Intercepts the code>Channel.getMembers() method
ChannelInterceptorgetNext()
Retrieve the next interceptor in the list
intgetOptionFlag()
An interceptor can react to a message based on a set bit on the message options.
ChannelInterceptorgetPrevious()
Retrieve the previous interceptor in the list
booleanhasMembers()
Intercepts the Channel.hasMembers() method
voidheartbeat()
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.
voidmessageReceived(ChannelMessage data)
the messageReceived is invoked when a message is received.
voidsendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)
The sendMessage method is called when a message is being sent to one more destinations.
voidsetNext(ChannelInterceptor next)
Set the next interceptor in the list of interceptors
voidsetOptionFlag(int flag)
Sets the option flag
voidsetPrevious(ChannelInterceptor previous)
Set the previous interceptor in the list
voidstart(int svc)
Starts up the channel.
voidstop(int svc)
Shuts down the channel.

Method Detail

fireInterceptorEvent

public void fireInterceptorEvent(ChannelInterceptor.InterceptorEvent event)

getLocalMember

public Member getLocalMember(boolean incAliveTime)
Intercepts the code>Channel.getLocalMember(boolean) method

Parameters: incAliveTime boolean

Returns: Member

See Also: Channel

getMember

public Member getMember(Member mbr)
Intercepts the code>Channel.getMember(Member) method

Parameters: mbr Member

Returns: Member - the actual member information, including stay alive

See Also: getMember

getMembers

public Member[] getMembers()
Intercepts the code>Channel.getMembers() method

Returns: Member[]

See Also: getMembers

getNext

public 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

getOptionFlag

public 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: getOptions

getPrevious

public 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

hasMembers

public boolean hasMembers()
Intercepts the Channel.hasMembers() method

Returns: boolean - if the channel has members in its membership group

See Also: hasMembers

heartbeat

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

messageReceived

public 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

sendMessage

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

See Also: ErrorHandler InterceptorPayload

setNext

public void setNext(ChannelInterceptor next)
Set the next interceptor in the list of interceptors

Parameters: next ChannelInterceptor

setOptionFlag

public void setOptionFlag(int flag)
Sets the option flag

Parameters: flag int

See Also: getOptionFlag

setPrevious

public void setPrevious(ChannelInterceptor previous)
Set the previous interceptor in the list

Parameters: previous ChannelInterceptor

start

public void start(int svc)
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

public void stop(int svc)
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

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