Galaxy Communicator Documentation:

The Hub and Server Executables

License / Documentation home / Help and feedback

The Hub

The Hub executable manages the interactions among the Communicator servers.

Command line

<GALAXY_ROOT>/bin/hub ...

Command line arguments


The -debug argument will cause the Hub to enter a loop which allows the user to explore the state of the Hub, each time the Hub is about to dispatch a message to a server.

The -pgm_file should be the user's program file.

The -init argument will add key-value pairs to the frame which seeds the initial token., and also contribute to the key-value pairs in the welcome message passed to the reinitialize dispatch function in each server.

The -validate key will use the message signatures reported by the servers and dynamically validate each message call.

The -server_locations_file key allows overrides of some of the server declaration information in the Hub script, in a file format that servers also understand. The location of each listener can be overriden (host and port), as well as whether the Hub or server is the listener. The rules for matching the overrides to the Hub script declarations can be found here.

The -locations key supports the same override rules as the server locations file, but on the command line. The name corresponds to the <entry_name> component of a file entry, while the segment after the at-sign ("@") corresponds to second component of a file entry. If you provide a host name, the Hub assumes that the server contains the listener (i.e., it's equivalent to having the token server as the third component of the file entry). So as a special case, the token <listener> used as in the host position indicates that the Hub should create the listener (i.e., it's equivalent to having the token hub as the third component of the file entry).

The -verbosity key controls how much information is printed out when the Hub executable runs. See the section on running the executables.

The -gui key allows the user to specify the location of the listener for a server which will receive a series of messages indicating the status of the Hub. This server can be used for visualization and profiling. As in the -locations argument, the <listener> token is used to indicate that the Hub should be listening. We've implemented a simple C server illustrating this message set.

The -suppress_pacifier key suppresses the printing of the pacifier dot which is usually printed for every 1-second interval the Hub doesn't receive any messages.


The servers

If you build Communicator servers in the default way, they will accept a range of common arguments. Among these arguments are:
static char *oas[] = {
  ...
  "-verbosity level", "set the verbosity of this server", NULL,
  "-server_locations_file file", "a server locations file of lines server host:port [hub|server]", NULL,
  ...
  NULL
};
Note that these arguments have correspondences in the Hub executable.

The -server_locations_file key allows overrides of some of the server information, in a file format that the Hub also understands. The port for the server's listener  can be overriden (host and port), as well as whether the Hub or server is the listener. This argument is identical to the -server_locations_file argument of the Hub executable.

The -verbosity key controls how much information is printed out when the server executable runs. See the section on running the executables.


Running the executables

Neither the Hub nor the server executables require any shell environment variables to be set. However, it is possible to control the verbosity (i.e., the amount of run-time information presented) using the GAL_VERBOSE environment variable, in addition to the -verbosity key on the command line of the Hub or servers. See the documentation on printing utilities for more details.

It is also possible to use the MITRE process monitor to help control the execution of arbitrary programs, including the Hub and servers. There is a shell version of this tool, but the version that's strongly preferred is written in Python, using Python's Tk support. The process monitor is used in almost all the MITRE examples.


License / Documentation home / Help and feedback
Last updated August 23, 2002