Messaging.SA message internal to the messaging system
type message = | OutputMessage of output_messageOutput to user
*)| ControlMessage of control_messageMessage internal to the messaging system
*)| RelayMessage of relay_messageMessage to be broadcast to worker processes
*)A message
val pp_print_message : Stdlib.Format.formatter -> message -> unitPretty-print a message
val init_im : unit -> ctxCreate the messaging system in the supervisor.
val init_worker : Lib.kind_module -> int -> ctx -> workerCreate and register the mailbox of a worker with the given kind module and identifier. Call run_worker in the domain of the worker afterwards.
val run_im : ctx -> unitTake the supervisor role in the calling domain.
val send_relay_message : relay_message -> unitBroadcast a message to the other engines and, from a worker, to the supervisor
val send_output_message : output_message -> unitSend a message to the invariant manager for output to the user
Send a termination message to the engine with the given identifier
val recv : unit -> (Lib.kind_module * message) listReceive the messages queued in the mailbox of the calling domain
Block until a message is queued in the mailbox of the calling domain. Returns immediately if the mailbox is not empty. Any event a domain may wait for arrives as a message, including termination requests, so waiting without a timeout cannot delay shutdown.
val purge_im_mailbox : ctx -> unitPurge the invariant manager mailbox. Should be called between two analyses, after all engines of the previous analysis have exited.
Returns true if a termination message was received. Does NOT modify received message in any way.
val disconnect : worker -> unitUnregister the mailbox of a worker, from any domain. The messages the worker sends from now on are dropped and a termination message is left in its mailbox, so that an engine that outlives its analysis cannot disturb the next one.
val exit : worker -> unitUnregister the mailbox of a worker, from the worker itself