org.jgroups.protocols

## Class FD_ICMP

- java.lang.Object
- - org.jgroups.stack.Protocol
  - - org.jgroups.protocols.FD
    - - org.jgroups.protocols.FD_ICMP

    public class FD_ICMP
    extends FD

Protocol which uses InetAddress.isReachable() to check whether a given host is up or not, taking 1 argument; the host name of the host to be pinged. Note that this protocol only works with JDK 5 ! The implementation of this may or may not use ICMP ! An alternative is to create a TCP connection to port 7 (echo service) and see whether it works ! This is obviously done in JDK 5, so unless an echo service is configured to run, this won't work...

Author:
  Bela Ban

### Nested Class Summary

Nested Classes
`protected class` `FD_ICMP.PingMonitor` Runs InetAddress.isReachable().

### Nested classes/interfaces inherited from class org.jgroups.protocols.FD

`FD.Broadcaster, FD.BroadcastTask, FD.FdHeader, FD.Monitor`

### Field Summary

Fields
`protected java.lang.String` `bind_interface_str`

### Fields inherited from class org.jgroups.protocols.FD

`bcast_task, local_addr, lock, members, num_heartbeats, num_suspect_events, num_tries, ping_dest, pingable_mbrs, suspect_history`

### Fields inherited from class org.jgroups.stack.Protocol

`down_prot, ergonomics, id, log, name, stack, stats, up_prot`

### Constructor Summary

Constructors
Constructor and Description
`FD_ICMP()`

### Method Summary

Methods
`protected FD.Monitor` `createMonitor()`
`void` `init()` Called after instance has been created (null constructor) and before protocol is started.
`java.lang.Object` `up(Event evt)` An event was received from the layer below.

### Methods inherited from class org.jgroups.protocols.FD

`down, getCurrentNumTries, getLocalAddress, getMaxTries, getMembers, getNumberOfHeartbeatsSent, getNumSuspectEventsGenerated, getPingableMembers, getPingDest, getTimeout, isShun, printSuspectHistory, resetStats, setMaxTries, setShun, setTimeout, startFailureDetection, stop, stopFailureDetection`

### Methods inherited from class org.jgroups.stack.Protocol

`destroy, downThreadEnabled, dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getId, getLevel, getName, getProperties, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getValue, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, setDownProtocol, setErgonomics, setId, setLevel, setProperties, setPropertiesInternal, setProperty, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, start, statsEnabled, upThreadEnabled`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### bind_interface_str

    protected java.lang.String bind_interface_str

### Constructor Detail

#### FD_ICMP

    public FD_ICMP()

### Method Detail

#### init

    public void init()
              throws java.lang.Exception

Description copied from class: `Protocol`
Called after instance has been created (null constructor) and before protocol is started. Properties are already set. Other protocols are not yet connected and events cannot yet be sent.

Overrides:
  `init` in class `FD`
Throws:
  `java.lang.Exception` - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the channel constructor will throw an exception

#### up

    public java.lang.Object up(Event evt)

Description copied from class: `Protocol`
An event was received from the layer below. Usually the current layer will want to examine the event type and - depending on its type - perform some computation (e.g. removing headers from a MSG event type, or updating the internal membership list when receiving a VIEW_CHANGE event). Finally the event is either a) discarded, or b) an event is sent down the stack using `down_prot.down()` or c) the event (or another event) is sent up the stack using `up_prot.up()`.

Overrides:
  `up` in class `FD`

#### createMonitor

    protected FD.Monitor createMonitor()

Overrides:
  `createMonitor` in class `FD`