Package org.apache.tools.ant.taskdefs.condition

# Class IsReachable

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.taskdefs.condition.IsReachable

All Implemented Interfaces:
  `Cloneable`, `Condition`

public class IsReachable extends ProjectComponent implements Condition

Test for a host being reachable using ICMP "ping" packets & echo operations. Ping packets are very reliable for assessing reachability in a LAN or WAN, but they do not get through any well-configured firewall. Echo (port 7) may.

This condition turns unknown host exceptions into false conditions. This is because on a laptop, DNS is one of the first services lost when the network goes; you are implicitly offline.

If a URL is supplied instead of a host, the hostname is extracted and used in the test--all other parts of the URL are discarded.

The test may not work through firewalls; that is, something may be reachable using a protocol such as HTTP, while the lower level ICMP packets get dropped on the floor. Similarly, a host may be detected as reachable with ICMP, but not reachable on other ports (i.e. port 80), because of firewalls.

Since:
  Ant 1.7

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static int`
  `DEFAULT_TIMEOUT`
  The default timeout.
  `static String`
  `ERROR_BAD_TIMEOUT`
  Error when invalid timeout value is defined
  `static String`
  `ERROR_BAD_URL`
  Error message when an invalid url is used.
  `static String`
  `ERROR_BOTH_TARGETS`
  Error message when url and host are specified.
  `static String`
  `ERROR_NO_HOST_IN_URL`
  Error message when no hostname in url.
  `static String`
  `ERROR_NO_HOSTNAME`
  Error when no hostname is defined
  `static String`
  `ERROR_ON_NETWORK`
  Network error message is seen.
  `static String`
  `METHOD_NAME`
  Deprecated.
  Since 1.10.6
  `static String`
  `MSG_NO_REACHABLE_TEST`
  Error message when no reachably test avail.

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IsReachable()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `eval()`
  Evaluate the condition.
  `void`
  `setHost​(String host)`
  Set the host to ping.
  `void`
  `setTimeout​(int timeout)`
  Set the timeout for the reachability test in seconds.
  `void`
  `setUrl​(String url)`
  Set the URL from which to extract the hostname.

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`

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

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

- ## Field Details

  - ### DEFAULT_TIMEOUT

    public static final int DEFAULT_TIMEOUT
    The default timeout.
    See Also:
      Constant Field Values

  - ### ERROR_NO_HOSTNAME

    public static final String ERROR_NO_HOSTNAME
    Error when no hostname is defined
    See Also:
      Constant Field Values

  - ### ERROR_BAD_TIMEOUT

    public static final String ERROR_BAD_TIMEOUT
    Error when invalid timeout value is defined
    See Also:
      Constant Field Values

  - ### ERROR_ON_NETWORK

    public static final String ERROR_ON_NETWORK
    Network error message is seen.
    See Also:
      Constant Field Values

  - ### ERROR_BOTH_TARGETS

    public static final String ERROR_BOTH_TARGETS
    Error message when url and host are specified.
    See Also:
      Constant Field Values

  - ### MSG_NO_REACHABLE_TEST

    public static final String MSG_NO_REACHABLE_TEST
    Error message when no reachably test avail.
    See Also:
      Constant Field Values

  - ### ERROR_BAD_URL

    public static final String ERROR_BAD_URL
    Error message when an invalid url is used.
    See Also:
      Constant Field Values

  - ### ERROR_NO_HOST_IN_URL

    public static final String ERROR_NO_HOST_IN_URL
    Error message when no hostname in url.
    See Also:
      Constant Field Values

  - ### METHOD_NAME

    @Deprecated public static final String METHOD_NAME
    Deprecated.
    Since 1.10.6
    The method name to look for in InetAddress
    See Also:
      Constant Field Values

- ## Constructor Details

  - ### IsReachable

    public IsReachable()

- ## Method Details

  - ### setHost

    public void setHost​(String host)
    Set the host to ping.
    Parameters:
      `host` - the host to ping.

  - ### setUrl

    public void setUrl​(String url)
    Set the URL from which to extract the hostname.
    Parameters:
      `url` - a URL object.

  - ### setTimeout

    public void setTimeout​(int timeout)
    Set the timeout for the reachability test in seconds.
    Parameters:
      `timeout` - the timeout in seconds.

  - ### eval

    public boolean eval() throws BuildException
    Evaluate the condition.
    Specified by:
      `eval` in interface `Condition`
    Returns:
      true if the condition is true.
    Throws:
      `BuildException` - if an error occurs