Package com.martiansoftware.nailgun
Class NGServer
- java.lang.Object
-
- com.martiansoftware.nailgun.NGServer
-
- All 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
Fields Modifier and Type Field Description static int
DEFAULT_SESSIONPOOLSIZE
Default size for thread poolPrintStream
err
System.err
at the time of the NGServer's creationInputStream
in
System.in
at the time of the NGServer's creationPrintStream
out
System.out
at the time of the NGServer's creation
-
Constructor Summary
Constructors Constructor Description NGServer()
Creates a new NGServer that will listen on the default port (defined inNGConstants.DEFAULT_PORT
).NGServer(InetAddress addr, int port)
Creates a new NGServer that will listen at the specified address and on the specified port with the default session pool size.NGServer(InetAddress addr, int port, int sessionPoolSize)
Creates a new NGServer that will listen at the specified address and on the specified port with the specified session pool size.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 newNGServer
.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 Detail
-
DEFAULT_SESSIONPOOLSIZE
public static final int DEFAULT_SESSIONPOOLSIZE
Default size for thread pool- See Also:
- Constant Field Values
-
out
public final PrintStream out
System.out
at the time of the NGServer's creation
-
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
-
-
Constructor Detail
-
NGServer
public NGServer(InetAddress addr, int port, int sessionPoolSize)
Creates a new NGServer that will listen at the specified address and on the specified port with the specified session pool size. This does not cause the server to start listening. To do so, create a newThread
wrapping thisNGServer
and start it.- Parameters:
addr
- the address at which to listen, ornull
to bind to all local addressesport
- the port on which to listen.sessionPoolSize
- the max number of idle sessions allowed by the pool
-
NGServer
public NGServer(InetAddress addr, int port)
Creates a new NGServer that will listen at the specified address and on the specified port with the default session pool size. This does not cause the server to start listening. To do so, create a newThread
wrapping thisNGServer
and start it.- Parameters:
addr
- the address at which to listen, ornull
to bind to all local addressesport
- the port on which to listen.sessionPoolSize
- the max number of idle sessions allowed by the pool
-
NGServer
public NGServer()
Creates a new NGServer that will listen on the default port (defined inNGConstants.DEFAULT_PORT
). This does not cause the server to start listening. To do so, create a newThread
wrapping thisNGServer
and start it.
-
-
Method Detail
-
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
-
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.
-
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 benull
, 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 benull
, in which case NailGun will use its own default)
-
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. The result is ajava.util.Map
, keyed by class name, with NailStats objects as values.- Returns:
- a snapshot of this NGServer's nail statistics.
-
getAliasManager
public AliasManager getAliasManager()
Returns the AliasManager in use by this NGServer.- Returns:
- the AliasManager in use by this NGServer.
-
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
method will have this method called with this NGServer as its sole parameter.public static void nailShutdown(NGServer)
- 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.
-
isRunning
public boolean isRunning()
Returns true iff the server is currently running.- Returns:
- true iff the server is currently running.
-
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.
-
run
public void run()
Listens for new connections and launches NGSession threads to process them.
-
main
public static void main(String[] args) throws NumberFormatException, UnknownHostException
Creates and starts a newNGServer
. A single optional argument is valid, specifying the port on which thisNGServer
should listen. If omitted,NGServer.DEFAULT_PORT
will be used.- Parameters:
args
- a single optional argument specifying the port on which to listen.- Throws:
NumberFormatException
- if a non-numeric port is specifiedUnknownHostException
-
-