## Uses of Interface
net.i2p.app.ClientApp

- Packages that use ClientApp
  Package | Description
  --- | ---
  net.i2p.app | Interfaces for classes to be started and stopped via clients.config.
  net.i2p.apps.systray | System tray integration and URL launcher for the I2P router console.
  net.i2p.desktopgui | Desktop graphical interface for managing I2P router lifecycle from the system tray.
  net.i2p.i2pcontrol | I2P Control provides a JSON-RPC 2.0 interface for controlling and monitoring the I2P router.
  net.i2p.i2ptunnel | Implementation of preconfigured tunnels for both clients and servers, with a comprehensive UI for tunnel management and configuration.
  net.i2p.jetty | I2P integration layer for the Jetty web server, providing embedded Jetty startup, configuration, and logging integration with the I2P router.
  net.i2p.router.app | Interface and framework for applications managed by the I2P router via clients.config.
  net.i2p.router.news | Classes to parse the I2P news format, which follows the Atom standard with additional metadata for the I2P update notification feature.
  net.i2p.router.startup | The I2P startup package loads configuration when I2P is started.
  net.i2p.router.sybil | Offline analysis tools for detecting Sybil attacks and malicious peer coordination in the I2P network.
  net.i2p.router.update | Classes to implement the router update process for checking and applying I2P router updates from the update manager.
  net.i2p.router.web | The router console user interface, implemented in routerconsole.jar, with these classes supporting the webapp in routerconsole.war.
  net.i2p.sam | The SAM (Simple Anonymous Messaging) client API.
  org.klomp.snark | I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.

- - ### Uses of ClientApp in net.i2p.app

    Fields in net.i2p.app with type parameters of type ClientApp
    Modifier and Type | Field and Description
    --- | ---
    `protected ConcurrentHashMap<String,ClientApp>` | ClientAppManagerImpl.`_registered`

    Methods in net.i2p.app that return ClientApp
    Modifier and Type | Method and Description
    --- | ---
    `ClientApp` | ClientAppManagerImpl.`getRegisteredApp(String name)` Get a registered app.
    `ClientApp` | ClientAppManager.`getRegisteredApp(String name)` Get a registered app.

    Methods in net.i2p.app with parameters of type ClientApp
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClientAppManagerImpl.`notify(ClientApp app, ClientAppState state, String message, Exception e)` Does nothing.
    `void` | ClientAppManager.`notify(ClientApp app, ClientAppState state, String message, Exception e)` Must be called on all state transitions except from UNINITIALIZED to INITIALIZED.
    `boolean` | ClientAppManagerImpl.`register(ClientApp app)` Register with the manager under the given name, so that other clients may find it.
    `boolean` | ClientAppManager.`register(ClientApp app)` Register with the manager under the given name, so that other clients may find it.
    `void` | ClientAppManagerImpl.`unregister(ClientApp app)` Unregister with the manager.
    `void` | ClientAppManager.`unregister(ClientApp app)` Unregister with the manager.

  - ### Uses of ClientApp in net.i2p.apps.systray

    Classes in net.i2p.apps.systray that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `UrlLauncher` A quick and simple multi-platform URL launcher.

  - ### Uses of ClientApp in net.i2p.desktopgui

    Classes in net.i2p.desktopgui that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExternalMain` Simplified main class for App Context only, requiring only i2p.jar.
    `class` | `Main` Main entry point for the I2P Desktop GUI application.

  - ### Uses of ClientApp in net.i2p.i2pcontrol

    Classes in net.i2p.i2pcontrol that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `I2PControlController` This handles the starting and stopping of Jetty from a single static class so it can be called via clients.config.
    `class` | `SocketController` This handles the starting and stopping of a ServerSocket from a single static class so it can be called via clients.config.

  - ### Uses of ClientApp in net.i2p.i2ptunnel

    Classes in net.i2p.i2ptunnel that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `TunnelControllerGroup` Coordinates tunnel groups within the JVM, managing configuration persistence.

  - ### Uses of ClientApp in net.i2p.jetty

    Classes in net.i2p.jetty that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `JettyStart` Start Jetty where the args are one or more XML files.

  - ### Uses of ClientApp in net.i2p.router.app

    Subinterfaces of ClientApp in net.i2p.router.app
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `RouterApp` If a class started via clients.config implements this interface, it will be used to manage the client, instead of starting with main() Clients implementing this interface MUST provide the following constructor: public MyClientApp(RouterContext context, ClientAppManager listener, String[] args) {...} All parameters are non-null.

  - ### Uses of ClientApp in net.i2p.router.news

    Classes in net.i2p.router.news that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `NewsManager` Manages I2P router news entries with in-memory storage and disk persistence.

  - ### Uses of ClientApp in net.i2p.router.startup

    Methods in net.i2p.router.startup that return ClientApp
    Modifier and Type | Method and Description
    --- | ---
    `ClientApp` | RouterAppManager.`getClientApp(String className, String[] args)` Get the first known ClientApp with this class name and exact arguments.

    Methods in net.i2p.router.startup with parameters of type ClientApp
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | RouterAppManager.`addAndStart(ClientApp app, String[] args)`
    `void` | RouterAppManager.`notify(ClientApp app, ClientAppState state, String message, Exception e)` Must be called on all state transitions except from UNINITIALIZED to INITIALIZED.
    `boolean` | RouterAppManager.`register(ClientApp app)` Register with the manager under the given name, so that other clients may find it.
    `void` | RouterAppManager.`unregister(ClientApp app)` Unregister with the manager.

  - ### Uses of ClientApp in net.i2p.router.sybil

    Classes in net.i2p.router.sybil that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Analysis` Sybil attack analysis implementation.

  - ### Uses of ClientApp in net.i2p.router.update

    Classes in net.i2p.router.update that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ConsoleUpdateManager` The central resource coordinating updates.

  - ### Uses of ClientApp in net.i2p.router.web

    Classes in net.i2p.router.web that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `GraphGenerator` A thread started by RouterConsoleRunner that checks the configuration for stats to be tracked via jrobin, and adds or deletes RRDs as necessary.
    `class` | `NavHelper` Helper for navigation and client application management in router console.
    `class` | `RouterConsoleRunner` Start the router console.
    `class` | `ShellService` Alternative to ShellCommand for plugins based on ProcessBuilder, which manages a process and keeps track of it's state by maintaining a Process object.

  - ### Uses of ClientApp in net.i2p.sam

    Classes in net.i2p.sam that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SAMBridge` SAM bridge implementation.

  - ### Uses of ClientApp in org.klomp.snark

    Classes in org.klomp.snark that implement ClientApp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SnarkManager` Central manager for multiple torrent downloads and the I2PSnark application.