# Class type Netplex_types.plugin

    class type plugin = object .. end

Plugins are extensions of the Netplex system that run in the controller and can be invoked from containers

    method program : Rpc_program.t

The RPC program structure on which the messaging bases. The program, version and procedure numbers are ignored

    method ctrl_added : controller -> unit

This method is invoked when the plugin has been added to this controller. Note that plugins can be added to several controllers.

    method ctrl_unplugged : controller -> unit

The plugin has been unplugged from this controller

    method ctrl_receive_call : controller ->
           container_id ->
           string -> Xdr.xdr_value -> (Xdr.xdr_value option -> unit) -> unit

`ctrl_receive_call ctrl cid procname procarg emit`: This method is called in the controller context `ctrl` when a procedure named `procname` is called. In `procarg` the argument of the procedure is passed. `cid` is the container ID from where the call originates. To pass the result `r` of the call back to the caller, is is required to call `emit (Some r)` (either immediately, or at some time in the future). By calling `emit None`, an error condition is propagated back to the caller.

    method ctrl_container_finished : controller -> container_id -> bool -> unit

This method is called when a container finishes (after `post_finish_hook`). The boolean is true if the container is the last of the terminated socket service.