Apache Tomcat 6.0.39

org.apache.catalina.tribes.group
Class ChannelCoordinator

java.lang.Object
  extended by org.apache.catalina.tribes.group.ChannelInterceptorBase
      extended by org.apache.catalina.tribes.group.ChannelCoordinator
All Implemented Interfaces:
ChannelInterceptor, Heartbeat, MembershipListener, MessageListener

public class ChannelCoordinator
extends ChannelInterceptorBase
implements MessageListener

The channel coordinator object coordinates the membership service, the sender and the receiver. This is the last interceptor in the chain.

Version:
$Id: ChannelCoordinator.java 1561773 2014-01-27 18:19:12Z markt $
Author:
Filip Hanik

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor
ChannelInterceptor.InterceptorEvent
 
Field Summary
protected  int optionFlag
           
 
Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase
log
 
Constructor Summary
ChannelCoordinator()
           
ChannelCoordinator(ChannelReceiver receiver, ChannelSender sender, MembershipService service)
           
 
Method Summary
 ChannelReceiver getClusterReceiver()
           
 ChannelSender getClusterSender()
           
 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
 MembershipService getMembershipService()
           
 int getOptionFlag()
          An interceptor can react to a message based on a set bit on the message options.
 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.
protected  void internalStart(int svc)
          Starts up the channel.
protected  void internalStop(int svc)
          Shuts down the channel.
 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.
 void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)
          Send a message to one or more members in the cluster
 void setClusterReceiver(ChannelReceiver clusterReceiver)
           
 void setClusterSender(ChannelSender clusterSender)
           
 void setMembershipService(MembershipService membershipService)
           
 void setOptionFlag(int flag)
          Sets the option flag
 void start(int svc)
          Starts up the channel.
 void stop(int svc)
          Shuts down the channel.
 
Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase
accept, fireInterceptorEvent, getNext, getPrevious, okToProcess, setNext, setPrevious
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.catalina.tribes.MessageListener
accept, equals, hashCode
 

Field Detail

optionFlag

protected int optionFlag
Constructor Detail

ChannelCoordinator

public ChannelCoordinator()

ChannelCoordinator

public ChannelCoordinator(ChannelReceiver receiver,
                          ChannelSender sender,
                          MembershipService service)
Method Detail

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
Overrides:
getOptionFlag in class ChannelInterceptorBase
Returns:
int
See Also:
ChannelMessage.getOptions()

setOptionFlag

public void setOptionFlag(int flag)
Description copied from interface: ChannelInterceptor
Sets the option flag

Specified by:
setOptionFlag in interface ChannelInterceptor
Overrides:
setOptionFlag in class ChannelInterceptorBase
Parameters:
flag - int
See Also:
ChannelInterceptor.getOptionFlag()

sendMessage

public void sendMessage(Member[] destination,
                        ChannelMessage msg,
                        InterceptorPayload payload)
                 throws ChannelException
Send a message to one or more members in the cluster

Specified by:
sendMessage in interface ChannelInterceptor
Overrides:
sendMessage in class ChannelInterceptorBase
Parameters:
destination - Member[] - the destinations, null or zero length means all
msg - ClusterMessage - the message to send
payload - InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
Throws:
ChannelException
See Also:
ErrorHandler, InterceptorPayload

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
Overrides:
start in class ChannelInterceptorBase
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
Overrides:
stop in class ChannelInterceptorBase
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

internalStart

protected void internalStart(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
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.

internalStop

protected void internalStop(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
DEFAULT - will shutdown 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.

memberAdded

public void memberAdded(Member member)
Description copied from interface: MembershipListener
A member was added to the group

Specified by:
memberAdded in interface MembershipListener
Overrides:
memberAdded in class ChannelInterceptorBase
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
Overrides:
memberDisappeared in class ChannelInterceptorBase
Parameters:
member - Member
See Also:
Member.SHUTDOWN_PAYLOAD

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
Specified by:
messageReceived in interface MessageListener
Overrides:
messageReceived in class ChannelInterceptorBase
Parameters:
msg - ChannelMessage

getClusterReceiver

public ChannelReceiver getClusterReceiver()

getClusterSender

public ChannelSender getClusterSender()

getMembershipService

public MembershipService getMembershipService()

setClusterReceiver

public void setClusterReceiver(ChannelReceiver clusterReceiver)

setClusterSender

public void setClusterSender(ChannelSender clusterSender)

setMembershipService

public void setMembershipService(MembershipService membershipService)

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
Overrides:
heartbeat in class ChannelInterceptorBase

hasMembers

public boolean hasMembers()
has members

Specified by:
hasMembers in interface ChannelInterceptor
Overrides:
hasMembers in class ChannelInterceptorBase
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
Overrides:
getMembers in class ChannelInterceptorBase
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
Overrides:
getMember in class ChannelInterceptorBase
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
Overrides:
getLocalMember in class ChannelInterceptorBase
Parameters:
incAlive - boolean
Returns:
Member
See Also:
Channel.getLocalMember(boolean)

Apache Tomcat 6.0.39

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