Class NGContext

java.lang.Object
com.martiansoftware.nailgun.NGContext

public class NGContext extends Object

Provides quite a bit of potentially useful information to classes specifically written for NailGun. The NailGun server itself, its AliasManager, the remote client's environment variables, and other information is available via this class. For all intents and purposes, the NGContext represents a single connection from a NailGun client.

If a class is written with a

 public static void nailMain(NGContext context)
 
method, that method will be called by NailGun instead of the traditional main(String[]) method normally used for programs. A fully populated NGContext object will then be provided to nailMain().
  • Field Details

    • remoteEnvironment

      private Properties remoteEnvironment
      The remote host's environment variables
    • remoteHost

      private InetAddress remoteHost
      The remote host's address
    • remotePort

      private int remotePort
      The port on the remote host that is communicating with NailGun
    • args

      private String[] args
      Command line arguments for the nail
    • exitStream

      private PrintStream exitStream
      A stream to which a client exit code can be printed
    • server

      private NGServer server
      The NGServer that accepted this connection
    • command

      private String command
      The command that was issued for this connection
    • workingDirectory

      private String workingDirectory
    • in

      public InputStream in
      The client's stdin
    • out

      public PrintStream out
      The client's stdout
    • err

      public PrintStream err
      The client's stderr
  • Constructor Details

    • NGContext

      public NGContext()
      Creates a new, empty NGContext
  • Method Details

    • setExitStream

      public void setExitStream(PrintStream exitStream)
    • setPort

      public void setPort(int remotePort)
    • setCommand

      public void setCommand(String command)
    • getCommand

      public String getCommand()
      Returns the command that was issued by the client (either an alias or the name of a class). This allows multiple aliases to point to the same class but result in different behaviors.
      Returns:
      the command issued by the client
    • setWorkingDirectory

      void setWorkingDirectory(String workingDirectory)
    • getWorkingDirectory

      public String getWorkingDirectory()
      Returns the current working directory of the client, as reported by the client. This is a String that will use the client's File.separator ('/' or '\'), which may differ from the separator on the server.
      Returns:
      the current working directory of the client
    • setEnv

      void setEnv(Properties remoteEnvironment)
    • setInetAddress

      void setInetAddress(InetAddress remoteHost)
    • setArgs

      public void setArgs(String[] args)
    • setNGServer

      void setNGServer(NGServer server)
    • getEnv

      public Properties getEnv()
      Returns a java.util.Properties object containing a copy of the client's environment variables
      Returns:
      a java.util.Properties object containing a copy of the client's environment variables
      See Also:
    • getFileSeparator

      public String getFileSeparator()
      Returns the file separator ('/' or '\\') used by the client's os.
      Returns:
      the file separator ('/' or '\\') used by the client's os.
    • getPathSeparator

      public String getPathSeparator()
      Returns the path separator (':' or ';') used by the client's os.
      Returns:
      the path separator (':' or ';') used by the client's os.
    • getInetAddress

      public InetAddress getInetAddress()
      Returns the address of the client at the other side of this connection.
      Returns:
      the address of the client at the other side of this connection.
    • getArgs

      public String[] getArgs()
      Returns the command line arguments for the command implementation (nail) on the server.
      Returns:
      the command line arguments for the command implementation (nail) on the server.
    • getNGServer

      public NGServer getNGServer()
      Returns the NGServer that accepted this connection
      Returns:
      the NGServer that accepted this connection
    • exit

      public void exit(int exitCode)
      Sends an exit command with the specified exit code to the client. The client will exit immediately with the specified exit code; you probably want to return from nailMain immediately after calling this.
      Parameters:
      exitCode - the exit code with which the client should exit
    • getPort

      public int getPort()
      Returns the port on the client connected to the NailGun server.
      Returns:
      the port on the client connected to the NailGun server.
    • assertLoopbackClient

      public void assertLoopbackClient()
      Throws a java.lang.SecurityException if the client is not connected via the loopback address.
    • assertLocalClient

      public void assertLocalClient()
      Throws a java.lang.SecurityException if the client is not connected from the local machine.
    • getInputStream

      private NGInputStream getInputStream()
      Returns:
      the NGInputStream for this session.
    • isClientConnected

      public boolean isClientConnected()
      Returns:
      true if client is connected, false if a client exit has been detected.
    • addClientListener

      public void addClientListener(NGClientListener listener)
      Parameters:
      listener - the NGClientListener to be notified of client events.
    • removeClientListener

      public void removeClientListener(NGClientListener listener)
      Parameters:
      listener - the NGClientListener to no longer be notified of client events.
    • removeAllClientListeners

      public void removeAllClientListeners()
      Do not notify about client exit
    • addHeartbeatListener

      public void addHeartbeatListener(NGHeartbeatListener listener)
      Parameters:
      listener - the NGHeartbeatListener to be notified of client events.
    • removeHeartbeatListener

      public void removeHeartbeatListener(NGHeartbeatListener listener)
      Parameters:
      listener - the NGHeartbeatListener to no longer be notified of client events.