Implements a dispatcher for tasks from a host to multiple daemons for processing, using a FIFO scheduling rule, queuing tasks as required.
dispatcher( host, url = NULL, n = NULL, asyncdial = FALSE, token = FALSE, lock = FALSE, tls = NULL, pass = NULL, ..., monitor = NULL, rs = NULL )
the character host URL to dial (where tasks are sent from), including the port to connect to (and optionally for websockets, a path), e.g. 'tcp://192.168.0.2:5555' or 'ws://192.168.0.2:5555/path'.
(optional) the character URL or vector of URLs dispatcher should listen at, including the port to connect to (and optionally for websockets, a path), e.g. 'tcp://192.168.0.2:5555' or 'ws://192.168.0.2:5555/path'. Specify 'tls+tcp://' or 'wss://' to use secure TLS connections. Tasks are sent to daemons dialled into these URLs. If not supplied, 'n' local inter-process URLs will be assigned automatically.
(optional) if specified, the integer number of daemons to listen for. Otherwise 'n' will be inferred from the number of URLs supplied in 'url'. Where a single URL is supplied and 'n' > 1, 'n' unique URLs will be automatically assigned for daemons to dial into.
[default FALSE] whether to perform dials asynchronously. The
default FALSE will error if a connection is not immediately possible
daemons has yet to be called on the host, or the
specified port is not open etc.). Specifying TRUE continues retrying
(indefinitely) if not immediately successful, which is more resilient but
can mask potential connection issues.
[default FALSE] if TRUE, appends a unique 40-character token to each URL path the dispatcher listens at (not applicable for TCP URLs which do not accept a path).
[default FALSE] if TRUE, sockets lock once a connection has been accepted, preventing further connection attempts. This provides safety against more than one daemon attempting to connect to a unique URL.
[default NULL] (required for secure TLS connections) either the character path to a file containing the PEM-encoded TLS certificate and associated private key (may contain additional certificates leading to a validation chain, with the TLS certificate first), or a length 2 character vector comprising [i] the TLS certificate (optionally certificate chain) and [ii] the associated private key.
[default NULL] (required only if the private key supplied to 'tls' is encrypted with a password) For security, should be provided through a function that returns this value, rather than directly.
additional arguments passed through to
launching local daemons i.e. 'url' is not specified.
(for package internal use only) do not set this parameter.
[default NULL] the initial value of .Random.seed. This is set automatically using L'Ecuyer-CMRG RNG streams generated by the host process and should not be independently supplied.
The network topology is such that a dispatcher acts as a gateway between the host and daemons, ensuring that tasks received from the host are dispatched on a FIFO basis for processing. Tasks are queued at the dispatcher to ensure tasks are only sent to daemons that can begin immediate execution of the task.