class type container =object
..end
Containers encapsulate the control flow of the service components. A container is run in a separate thread or process.
Thread safety: All methods except start
can be called from
any thread, and provide full thread safety.
method socket_service_name : string
method socket_service : socket_service
method container_id : container_id
Return the container ID
method ptype : parallelization_type
The parallelization type actually used for this container
method event_system : Unixqueue.unix_event_system
The event system the container uses
method start : extfd -> extfd -> unit
Internal Method. Called by the controller to start the container.
It is the responsibility of the container to call the
post_start_hook
and the pre_finish_hook
.
The file descriptors are endpoints of RPC connections to the
controller. The first serves calls of the Control
program,
and the second serves calls of the System
program.
When start
returns the container will be terminated.
method shutdown : unit -> unit
Initiates a shutdown of the container.
method n_connections : int
The current number of connections
method n_total : int
The sum of all connections so far
method system : Rpc_client.t
An RPC client that can be used to send messages to the controller.
Only available while start
is running. It is bound to
System.V1
.
In multi-threaded programs access to system
must be governed
by system_monitor
. See Uq_mt
for details what this means.
method system_monitor : Uq_mt.monitor
The thread monitor protecting the system
RPC client
method lookup : string -> string -> string option
lookup service_name protocol_name
tries to find a Unix domain
socket for the service and returns it.
method lookup_container_sockets : string -> string -> string array
lookup_container_sockets service_name protocol_name
: returns
the Unix Domain paths of all container sockets for this service and
protocol. These are the sockets declared with address type
"container" in the config file.
method owned_container_sockets : (string * string) list
List of pairs (protocol_name, path)
of all container sockets
of this container
method send_message : string -> string -> string array -> unit
send_message service_pattern msg_name msg_arguments
: Sends
a message to all services and message receivers matching
service_pattern
. The pattern may include the wildcard *
.
See the Netplex_types.controller.send_message
method for
the notification guarantees.
method log : level -> string -> unit
Sends a log message to the controller.
method log_subch : string -> level -> string -> unit
Sends a log message to the controller. The first string is the subchannel
method update_detail : Unix.file_descr -> string -> unit
Update the detail string output for the netplex.connections
admin message
method var : string -> param_value_or_any
Returns the value of a container variable or Not_found
. Container
variables can be used by the user of a container to store additional
values in the container. These values exist once per thread/process.
method set_var : string -> param_value_or_any -> unit
Sets the value of a container variable
method call_plugin : plugin -> string -> Netxdr.xdr_value -> Netxdr.xdr_value
call_plugin p procname procarg
: This method can be called
from the container context to invoke the plugin p
procedure
procname
. This means that the ctrl_receive_call
of the
same plugin is invoked in the controller context.
method activate_lever : int -> encap -> encap
Runs a lever function registered in the controller. The int
argument identifies the lever. The encap
argument is the parameter,
and the returned exception is the result. See also
Netplex_cenv.Make_lever
for a convenient way to create
and use levers.
method startup_directory : string
The current directory at Netplex startup time (same view as controller)