|
Apache Tomcat 7.0.28 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.catalina.tribes.membership.McastServiceImpl
public class McastServiceImpl
A membership implementation using simple multicast. This is the representation of a multicast membership service. This class is responsible for maintaining a list of active cluster nodes in the cluster. If a node fails to send out a heartbeat, the node will be dismissed. This is the low level implementation that handles the multicasting sockets. Need to fix this, could use java.nio and only need one thread to send and receive, or just use a timeout on the receive
Nested Class Summary | |
---|---|
class |
McastServiceImpl.ReceiverThread
|
protected static class |
McastServiceImpl.RecoveryThread
|
class |
McastServiceImpl.SenderThread
|
Field Summary | |
---|---|
protected InetAddress |
address
The multicast address |
protected boolean |
doRunReceiver
|
protected boolean |
doRunSender
Internal flag used for the listen thread that listens to the multicasting socket. |
protected ExecutorService |
executor
Dont interrupt the sender/receiver thread, but pass off to an executor |
protected Object |
expiredMutex
|
protected boolean |
localLoopbackDisabled
disable/enable local loopback message |
protected static int |
MAX_PACKET_SIZE
|
protected InetAddress |
mcastBindAddress
bind address |
protected int |
mcastSoTimeout
Read timeout on the mcast socket |
protected int |
mcastTTL
Time to live for the multicast packets that are being sent out |
protected MemberImpl |
member
The local member that we intend to broad cast over and over again |
protected Membership |
membership
The membership, used so that we calculate memberships when they arrive or don't arrive |
protected MessageListener |
msgservice
The actual listener for broadcast callbacks |
protected int |
port
The multicast port |
protected DatagramPacket |
receivePacket
Reuse the receivePacket, no need to create a new one everytime |
protected McastServiceImpl.ReceiverThread |
receiver
Thread to listen for pings |
protected int |
recoveryCounter
nr of times the system has to fail before a recovery is initiated |
protected boolean |
recoveryEnabled
Add the ability to turn on/off recovery |
protected long |
recoverySleepTime
The time the recovery thread sleeps between recovery attempts |
protected McastServiceImpl.SenderThread |
sender
Thread to send pings |
protected long |
sendFrequency
How often to we send out a broadcast saying we are alive, must be smaller than timeToExpiration |
protected DatagramPacket |
sendPacket
Reuse the sendPacket, no need to create a new one everytime |
protected MembershipListener |
service
The actual listener, for callback when stuff goes down |
protected MulticastSocket |
socket
Socket that we intend to listen to |
protected int |
startLevel
|
protected long |
timeToExpiration
The time it takes for a member to expire. |
Constructor Summary | |
---|---|
McastServiceImpl(MemberImpl member,
long sendFrequency,
long expireTime,
int port,
InetAddress bind,
InetAddress mcastAddress,
int ttl,
int soTimeout,
MembershipListener service,
MessageListener msgservice,
boolean localLoopbackDisabled)
Create a new mcast service impl |
Method Summary | |
---|---|
protected void |
checkExpired()
|
int |
getRecoveryCounter()
|
long |
getRecoverySleepTime()
|
long |
getServiceStartTime()
|
void |
init()
|
boolean |
isRecoveryEnabled()
|
void |
receive()
Receive a datagram packet, locking wait |
void |
send(boolean checkexpired)
Send a ping |
void |
send(boolean checkexpired,
DatagramPacket packet)
|
void |
setRecoveryCounter(int recoveryCounter)
|
void |
setRecoveryEnabled(boolean recoveryEnabled)
|
void |
setRecoverySleepTime(long recoverySleepTime)
|
protected void |
setupSocket()
|
void |
start(int level)
Start the service |
boolean |
stop(int level)
Stops the service |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static int MAX_PACKET_SIZE
protected volatile boolean doRunSender
protected volatile boolean doRunReceiver
protected int startLevel
protected MulticastSocket socket
protected MemberImpl member
protected InetAddress address
protected int port
protected long timeToExpiration
protected long sendFrequency
protected DatagramPacket sendPacket
protected DatagramPacket receivePacket
protected Membership membership
protected MembershipListener service
protected MessageListener msgservice
protected McastServiceImpl.ReceiverThread receiver
protected McastServiceImpl.SenderThread sender
protected int mcastTTL
protected int mcastSoTimeout
protected InetAddress mcastBindAddress
protected int recoveryCounter
protected long recoverySleepTime
protected boolean recoveryEnabled
protected ExecutorService executor
protected boolean localLoopbackDisabled
protected final Object expiredMutex
Constructor Detail |
---|
public McastServiceImpl(MemberImpl member, long sendFrequency, long expireTime, int port, InetAddress bind, InetAddress mcastAddress, int ttl, int soTimeout, MembershipListener service, MessageListener msgservice, boolean localLoopbackDisabled) throws IOException
member
- - the local membersendFrequency
- - the time (ms) in between pings sent outexpireTime
- - the time (ms) for a member to expireport
- - the mcast portbind
- - the bind address (not sure this is used yet)mcastAddress
- - the mcast addressservice
- - the callback servicelocalLoopbackDisabled
- - disable loopbackMode
IOException
Method Detail |
---|
public void init() throws IOException
IOException
protected void setupSocket() throws IOException
IOException
public void start(int level) throws IOException
level
- 1 starts the receiver, level 2 starts the sender
IOException
- if the service fails to start
IllegalStateException
- if the service is already startedpublic boolean stop(int level) throws IOException
IOException
- if the service fails to disconnect from the socketspublic void receive() throws IOException
IOException
protected void checkExpired()
public void send(boolean checkexpired) throws IOException
IOException
public void send(boolean checkexpired, DatagramPacket packet) throws IOException
IOException
public long getServiceStartTime()
public int getRecoveryCounter()
public boolean isRecoveryEnabled()
public long getRecoverySleepTime()
public void setRecoveryCounter(int recoveryCounter)
public void setRecoveryEnabled(boolean recoveryEnabled)
public void setRecoverySleepTime(long recoverySleepTime)
|
Apache Tomcat 7.0.28 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |