Next: , Previous: Adding support for new Version Control Systems, Up: Customizing and Extending GPS


16.10 The Server Mode

In order to give access to the GPS capabilities from external processes (e.g. Emacs), GPS can be launched in server mode.

The two relevant command line switches are --server and --hide.

--server will open a socket on the given port, allowing multiple clients to connect to a running GPS, and sending GPS shell or python commands.

--hide tells GPS not to display its main window when starting. note that under unix systems, you still need to have access to the current screen (as determined by the DISPLAY environment variable) in this mode.

Using the two switches together provides a way to launch GPS as a background process with no initial user interface.

Clients connecting through a standard socket have access to a simple shell using GPS>> as the separating prompt between each command. This is needed in order to determine when the output (result) of a command is terminated.

All the GPS shell commands (as defined in The GPS Shell) are available from this shell. In addition, the python interpreter, if enabled, is also available through the use of the python prefix before a python command.

For example, sending pwd through the socket will send the pwd command through the GPS shell and display the result on the socket; similarly, sending python GPS.pwd() will send the GPS.help() command through the python interpreter (see The Python Interpreter for more details).

The socket shell provides also additional commands:

For example, let suppose that we start gps with the --server=1234 command: this will bring up GPS as usual.

Now, on a separate terminal, create a simple client by typing the following:

     telnet localhost 1234
     Trying 127.0.0.1...
     Connected to localhost.
     Escape character is '^]'.
     GPS>> id test-1
     id set to 'test-1'
     GPS>> pwd
     c:\working-dir\
     GPS>>

Then in the GPS Python Console:

     >>> GPS.Socket ("test-1").send ("hello, it's time to logout\n");

At this point, the following is received on the client (telnet) side:

     GPS>> hello, it's time to logout

We can then close the client:

     logout
     Connection closed by foreign host.