public class FD_ALL2 extends Protocol
限定符和类型 | 类和说明 |
---|---|
static class |
FD_ALL2.HeartbeatHeader |
限定符和类型 | 字段和说明 |
---|---|
protected boolean |
has_suspected_mbrs |
protected java.util.concurrent.Future<?> |
heartbeat_sender_future |
protected long |
interval |
protected Address |
local_addr |
protected java.util.concurrent.locks.Lock |
lock |
protected java.util.List<Address> |
members |
protected boolean |
msg_counts_as_heartbeat |
protected int |
num_heartbeats_received |
protected int |
num_heartbeats_sent |
protected int |
num_suspect_events |
protected BoundedList<Tuple<Address,java.lang.Long>> |
suspect_history |
protected java.util.Set<Address> |
suspected_mbrs |
protected long |
timeout |
protected long |
timeout_check_interval |
protected java.util.concurrent.Future<?> |
timeout_checker_future |
protected TimeScheduler |
timer |
protected java.util.concurrent.ConcurrentMap<Address,java.util.concurrent.atomic.AtomicBoolean> |
timestamps |
构造器和说明 |
---|
FD_ALL2() |
限定符和类型 | 方法和说明 |
---|---|
protected java.lang.String |
_printTimestamps() |
java.lang.Object |
down(Event evt)
An event is to be sent down the stack.
|
int |
getHeartbeatsReceived() |
int |
getHeartbeatsSent() |
long |
getInterval() |
java.lang.String |
getLocalAddress() |
java.lang.String |
getMembers() |
java.lang.String |
getSuspectedMembers() |
int |
getSuspectEventsSent() |
long |
getTimeout() |
long |
getTimeoutCheckInterval() |
protected void |
handleViewChange(View v) |
void |
init()
Called after instance has been created (null constructor) and before protocol is started.
|
protected boolean |
isHeartbeatSenderRunning() |
boolean |
isRunning() |
protected boolean |
isTimeoutCheckerRunning() |
java.lang.String |
printSuspectHistory() |
java.lang.String |
printTimestamps() |
void |
resetStats() |
void |
setInterval(long interval) |
void |
setTimeout(long timeout) |
void |
setTimeoutCheckInterval(long timeout_check_interval) |
void |
startFailureDetection() |
protected void |
startHeartbeatSender() |
protected void |
startTimeoutChecker() |
void |
stop()
This method is called on a
Channel.disconnect() . |
void |
stopFailureDetection() |
protected void |
stopHeartbeatSender() |
protected void |
stopTimeoutChecker() |
protected void |
suspect(java.util.List<Address> suspects) |
protected boolean |
unsuspect(Address mbr)
Removes mbr from suspected_mbrs and sends a UNSUSPECT event up and down the stack
|
java.lang.Object |
up(Event evt)
An event was received from the layer below.
|
void |
up(MessageBatch batch)
Sends up a multiple messages in a
MessageBatch . |
protected void |
update(Address sender) |
accept, destroy, dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getName, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getUpServices, getValue, isErgonomics, level, parse, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStatistics, setDownProtocol, setErgonomics, setId, setLevel, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, start, statsEnabled
protected long interval
protected long timeout
protected long timeout_check_interval
protected boolean msg_counts_as_heartbeat
protected int num_heartbeats_sent
protected int num_heartbeats_received
protected int num_suspect_events
protected final java.util.concurrent.ConcurrentMap<Address,java.util.concurrent.atomic.AtomicBoolean> timestamps
protected Address local_addr
protected final java.util.List<Address> members
protected final java.util.Set<Address> suspected_mbrs
protected volatile boolean has_suspected_mbrs
protected TimeScheduler timer
protected java.util.concurrent.Future<?> heartbeat_sender_future
protected java.util.concurrent.Future<?> timeout_checker_future
protected final java.util.concurrent.locks.Lock lock
protected final BoundedList<Tuple<Address,java.lang.Long>> suspect_history
public java.lang.String getLocalAddress()
public java.lang.String getMembers()
public java.lang.String getSuspectedMembers()
public int getHeartbeatsSent()
public int getHeartbeatsReceived()
public int getSuspectEventsSent()
public long getTimeout()
public void setTimeout(long timeout)
public long getTimeoutCheckInterval()
public void setTimeoutCheckInterval(long timeout_check_interval)
public long getInterval()
public void setInterval(long interval)
public boolean isRunning()
public java.lang.String printSuspectHistory()
public java.lang.String printTimestamps()
public void stopFailureDetection()
public void startFailureDetection()
public void resetStats()
resetStats
在类中 Protocol
public void init() throws java.lang.Exception
Protocol
public void stop()
Protocol
Channel.disconnect()
. Stops work (e.g. by closing multicast socket).
Will be called from top to bottom. This means that at the time of the method invocation the
neighbor protocol below is still working. This method will replace the
STOP, STOP_OK, CLEANUP and CLEANUP_OK events. The ProtocolStack guarantees that
when this method is called all messages in the down queue will have been flushedpublic java.lang.Object up(Event evt)
Protocol
down_prot.down()
or c) the event (or another event) is sent up
the stack using up_prot.up()
.public void up(MessageBatch batch)
Protocol
MessageBatch
. The sender of the batch is always the same, and so is the
destination (null == multicast messages). Messages in a batch can be OOB messages, regular messages, or mixed
messages, although the transport itself will create initial MessageBatches that contain only either OOB or
regular messages.
The default processing below sends messages up the stack individually, based on a matching criteria
(calling Protocol.accept(Message)
), and - if true - calls Protocol.up(Event)
for that message and removes the message. If the batch is not empty, it is passed up, or else it is dropped.
Subclasses should check if there are any messages destined for them (e.g. using
MessageBatch.getMatchingMessages(short, boolean)
), then possibly remove and process them and finally pass
the batch up to the next protocol. Protocols can also modify messages in place, e.g. ENCRYPT could decrypt all
encrypted messages in the batch, not remove them, and pass the batch up when done.public java.lang.Object down(Event evt)
Protocol
down_prot.down()
. In case of a GET_ADDRESS event (which tries to
retrieve the stack's address from one of the bottom layers), the layer may need to send
a new response event back up the stack using up_prot.up()
.protected void startTimeoutChecker()
protected void stopTimeoutChecker()
protected void startHeartbeatSender()
protected void stopHeartbeatSender()
protected boolean isTimeoutCheckerRunning()
protected boolean isHeartbeatSenderRunning()
protected void update(Address sender)
protected void handleViewChange(View v)
protected java.lang.String _printTimestamps()
protected void suspect(java.util.List<Address> suspects)
protected boolean unsuspect(Address mbr)
mbr
-