net.i2p.i2ptunnel

## Class I2Ping

- java.lang.Object
- - net.i2p.util.EventDispatcherImpl
  - - net.i2p.i2ptunnel.I2PTunnelTask
    - - net.i2p.i2ptunnel.I2PTunnelClientBase
      - - net.i2p.i2ptunnel.I2Ping

- All Implemented Interfaces:
    Runnable, EventDispatcher

      public class I2Ping
      extends I2PTunnelClientBase

  I2P ping utility for CLI use.

  Warning: Not stable API. Sample code for I2PTunnel CLI only. Not for external use.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `PROP_COMMAND`

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

      `_clientId, _context, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, listenerReady, mySockets, PROP_USE_SSL, sockLock, sockMgr, ss`

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask

      `open, tunnel`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `I2Ping(Logging l, boolean ownDest, EventDispatcher notifyThis, I2PTunnel tunnel)` tunnel.getOptions must contain "command".

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `clientConnectionRun(Socket s)` Manage a connection in a separate thread.
    `boolean` | `close(boolean forced)` Note that the tunnel can be reopened after this by calling startRunning().
    `void` | `run()` Overrides super.
    `void` | `runCommand(String cmd)`
    `static String` | `usage()`

    - ### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

      `buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, closeSocket, createI2PSocket, createI2PSocket, createI2PSocket, destroy, getDefaultOptions, getDefaultOptions, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, killSharedClient, manageConnection, optionsUpdated, startRunning, verifySocketManager`

    - ### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask

      `connected, disconnected, errorOccurred, getBooleanOption, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString`

    - ### Methods inherited from class net.i2p.util.EventDispatcherImpl

      `attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue`

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

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

- - ### Field Detail

    - #### PROP_COMMAND

          public static final String PROP_COMMAND

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### I2Ping

          public I2Ping(Logging l,
                        boolean ownDest,
                        EventDispatcher notifyThis,
                        I2PTunnel tunnel)

      tunnel.getOptions must contain "command".
      Throws:
        `IllegalArgumentException` - if it doesn't

  - ### Method Detail

    - #### clientConnectionRun

          protected void clientConnectionRun(Socket s)

      Description copied from class: `I2PTunnelClientBase`
      Manage a connection in a separate thread. This only works if you do not override manageConnection(). This is run in a thread from an unlimited-size thread pool, so it may block or run indefinitely.
      Specified by:
        `clientConnectionRun` in class `I2PTunnelClientBase`

    - #### close

          public boolean close(boolean forced)

      Description copied from class: `I2PTunnelClientBase`
      Note that the tunnel can be reopened after this by calling startRunning(). This may not release all resources. In particular, the I2PSocketManager remains and it may have timer threads that continue running. To release all resources permanently, call destroy(). Does nothing if open is already false. Sets open = false but does not notifyAll().
      Overrides:
        `close` in class `I2PTunnelClientBase`
      Returns:
        success

    - #### run

          public void run()

      Overrides super. No client ServerSocket is created.
      Specified by:
        `run` in interface `Runnable`
      Overrides:
        `run` in class `I2PTunnelClientBase`

    - #### runCommand

          public void runCommand(String cmd)
                          throws InterruptedException,
                                 IOException

      Throws:
        `InterruptedException`
        `IOException`

    - #### usage

          public static String usage()