com.martiansoftware.nailgun

Class NGServer

Implemented Interfaces:
Runnable

public class NGServer
extends Object
implements Runnable

Listens for new connections from NailGun clients and launches NGSession threads to process them.

This class can be run as a standalone server or can be embedded within larger applications as a means of providing command-line interaction with the application.

Author:
Marty Lamb

Field Summary

PrintStream
err
System.err at the time of the NGServer's creation
InputStream
in
System.in at the time of the NGServer's creation
PrintStream
out
System.out at the time of the NGServer's creation

Constructor Summary

NGServer()
Creates a new NGServer that will listen on the default port (defined in NGConstants.DEFAULT_PORT).
NGServer(InetAddress addr, int port)
Creates a new NGServer that will listen at the specified address and on the specified port.

Method Summary

boolean
allowsNailsByClassName()
Returns a flag that indicates whether Nail lookups by classname are allowed.
AliasManager
getAliasManager()
Returns the AliasManager in use by this NGServer.
Class
getDefaultNailClass()
Returns the default class that will be used if no Nails can be found via alias or classname.
Map
getNailStats()
Returns a snapshot of this NGServer's nail statistics.
int
getPort()
Returns the port on which this server is (or will be) listening.
boolean
isRunning()
Returns true iff the server is currently running.
static void
main(String[] args)
Creates and starts a new NGServer.
void
run()
Listens for new connections and launches NGSession threads to process them.
void
setAllowNailsByClassName(boolean allowNailsByClassName)
Sets a flag that determines whether Nails can be executed by class name.
void
setDefaultNailClass(Class defaultNailClass)
Sets the default class to use for the Nail if no Nails can be found via alias or classname.
void
shutdown(boolean exitVM)
Shuts down the server.

Field Details

err

public final PrintStream err
System.err at the time of the NGServer's creation

in

public final InputStream in
System.in at the time of the NGServer's creation

out

public final PrintStream out
System.out at the time of the NGServer's creation

Constructor Details

NGServer

public NGServer()
Creates a new NGServer that will listen on the default port (defined in NGConstants.DEFAULT_PORT). This does not cause the server to start listening. To do so, create a new Thread wrapping this NGServer and start it.

NGServer

public NGServer(InetAddress addr,
                int port)
Creates a new NGServer that will listen at the specified address and on the specified port. This does not cause the server to start listening. To do so, create a new Thread wrapping this NGServer and start it.
Parameters:
addr - the address at which to listen, or null to bind to all local addresses
port - the port on which to listen.

Method Details

allowsNailsByClassName

public boolean allowsNailsByClassName()
Returns a flag that indicates whether Nail lookups by classname are allowed. If this is false, Nails can only be run via aliases.
Returns:
a flag that indicates whether Nail lookups by classname are allowed.

getAliasManager

public AliasManager getAliasManager()
Returns the AliasManager in use by this NGServer.
Returns:
the AliasManager in use by this NGServer.

getDefaultNailClass

public Class getDefaultNailClass()
Returns the default class that will be used if no Nails can be found via alias or classname.
Returns:
the default class that will be used if no Nails can be found via alias or classname.

getNailStats

public Map getNailStats()
Returns:
a snapshot of this NGServer's nail statistics.

getPort

public int getPort()
Returns the port on which this server is (or will be) listening.
Returns:
the port on which this server is (or will be) listening.

isRunning

public boolean isRunning()
Returns true iff the server is currently running.
Returns:
true iff the server is currently running.

main

public static void main(String[] args)
            throws NumberFormatException,
                   UnknownHostException
Creates and starts a new NGServer. A single optional argument is valid, specifying the port on which this NGServer should listen. If omitted, NGServer.DEFAULT_PORT will be used.
Parameters:
args - a single optional argument specifying the port on which to listen.

run

public void run()
Listens for new connections and launches NGSession threads to process them.

setAllowNailsByClassName

public void setAllowNailsByClassName(boolean allowNailsByClassName)
Sets a flag that determines whether Nails can be executed by class name. If this is false, Nails can only be run via aliases (and you should probably remove ng-alias from the AliasManager).
Parameters:
allowNailsByClassName - true iff Nail lookups by classname are allowed

setDefaultNailClass

public void setDefaultNailClass(Class defaultNailClass)
Sets the default class to use for the Nail if no Nails can be found via alias or classname. (may be null, in which case NailGun will use its own default)
Parameters:
defaultNailClass - the default class to use for the Nail if no Nails can be found via alias or classname. (may be null, in which case NailGun will use its own default)

shutdown

public void shutdown(boolean exitVM)
Shuts down the server. The server will stop listening and its thread will finish. Any running nails will be allowed to finish.

Any nails that provide a

public static void nailShutdown(NGServer)
method will have this method called with this NGServer as its sole parameter.
Parameters:
exitVM - if true, this method will also exit the JVM after calling nailShutdown() on any nails. This may prevent currently running nails from exiting gracefully, but may be necessary in order to perform some tasks, such as shutting down any AWT or Swing threads implicitly launched by your nails.

© 2004, Martian Software, Inc.