net.i2p.router.startup
Class RouterAppManager

java.lang.Object
  extended by net.i2p.router.startup.RouterAppManager
All Implemented Interfaces:
ClientAppManager

public class RouterAppManager
extends Object
implements ClientAppManager

Notify the router of events, and provide methods for client apps to find each other.

Since:
0.9.4

Nested Class Summary
 class RouterAppManager.Shutdown
           
 
Constructor Summary
RouterAppManager(RouterContext ctx)
           
 
Method Summary
 boolean addAndStart(ClientApp app, String[] args)
           
 ClientApp getClientApp(String className, String[] args)
          Get the first known ClientApp with this class name and exact arguments.
 ClientApp getRegisteredApp(String name)
          Get a registered app.
 void notify(ClientApp app, ClientAppState state, String message, Exception e)
          Must be called on all state transitions except from UNINITIALIZED to INITIALIZED.
 boolean register(ClientApp app)
          Register with the manager under the given name, so that other clients may find it.
 void renderStatusHTML(Writer out)
          debug
 void shutdown()
           
 void unregister(ClientApp app)
          Unregister with the manager.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RouterAppManager

public RouterAppManager(RouterContext ctx)
Method Detail

addAndStart

public boolean addAndStart(ClientApp app,
                           String[] args)
Parameters:
args - the args that were used to instantiate the app, non-null, may be zero-length
Returns:
success
Throws:
IllegalArgumentException - if already added

getClientApp

public ClientApp getClientApp(String className,
                              String[] args)
Get the first known ClientApp with this class name and exact arguments. Caller may then retrieve or control the state of the returned client. A client will generally be found only if it is running or transitioning; after it is stopped it will not be tracked by the manager.

Parameters:
args - non-null, may be zero-length
Returns:
client app or null
Since:
0.9.6

notify

public void notify(ClientApp app,
                   ClientAppState state,
                   String message,
                   Exception e)
Must be called on all state transitions except from UNINITIALIZED to INITIALIZED.

Specified by:
notify in interface ClientAppManager
Parameters:
app - non-null
state - non-null
message - may be null
e - may be null

register

public boolean register(ClientApp app)
Register with the manager under the given name, so that other clients may find it. Only required for apps used by other apps.

Specified by:
register in interface ClientAppManager
Parameters:
app - non-null
Returns:
true if successful, false if duplicate name

unregister

public void unregister(ClientApp app)
Unregister with the manager. Name must be the same as that from register(). Only required for apps used by other apps.

Specified by:
unregister in interface ClientAppManager
Parameters:
app - non-null

getRegisteredApp

public ClientApp getRegisteredApp(String name)
Get a registered app. Only used for apps finding other apps. Do not hold a static reference. If you only need to find a port, use the PortMapper instead.

Specified by:
getRegisteredApp in interface ClientAppManager
Parameters:
name - non-null
Returns:
client app or null

shutdown

public void shutdown()
Since:
0.9.6

renderStatusHTML

public void renderStatusHTML(Writer out)
                      throws IOException
debug

Throws:
IOException
Since:
0.9.6