# Class type Netplex_types.processor_hooks

    class type processor_hooks = object .. end

Processor hooks can be used to modify the behavior of a processor. See `Netplex_intro.servproc` for some documentation about the hooks.

    method post_add_hook : socket_service -> controller -> unit

A user-supplied function that is called after the service has been added to the controller

    method post_rm_hook : socket_service -> controller -> unit

A user-supplied function that is called after the service has been removed from the controller

    method pre_start_hook : socket_service ->
           controller -> container_id -> unit

A user-supplied function that is called before the container is created and started. It is called from the process/thread of the controller.

    method post_start_hook : container -> unit

A user-supplied function that is called after the container is created and started, but before the first service request arrives. It is called from the process/thread of the container.

    method pre_finish_hook : container -> unit

A user-supplied function that is called just before the container is terminated. It is called from the process/thread of the container.

    method post_finish_hook : socket_service ->
           controller -> container_id -> unit

A user-supplied function that is called after the container is terminated. It is called from the process/thread of the controller.

    method workload_hook : container -> bool -> int -> unit

A user-supplied function that is called when the workload changes, i.e. a new connection has been accepted, or an existing connection could be completely processed. The `bool` argument is `true` if the reason is a new connection. The `int` argument is the number of connections. This function is called from the process/thread of the container.

    method receive_message : container -> string -> string array -> unit

This function is called when a broadcast message is received. The first string is the name of the message, and the array are the arguments.

    method receive_admin_message : container -> string -> string array -> unit

This function is called when a broadcast admin message is received. The first string is the name of the message, and the array are the arguments.

    method config_internal : (string * polysocket_kind_box) list

For internal services, this list configures which message kind is used for which protocol.

    method process_internal : when_done:(unit -> unit) ->
           container -> polyserver_box -> string -> unit

`process_internal ~when_done cont client protocol`: This function is called instead of `process` when a connection to an internal service is made. This method has to accept or reject the connection with `Netsys_polysocket.accept` or `Netsys_polysocket.refuse`, respectively. The default is to refuse.

Like `process`, the function must call `when_done` when the connection is fully processed.

    method system_shutdown : unit -> unit

A user-supplied function that is called when a system shutdown notification arrives. This notification is just for information that every container of the system will soon be shut down. The system is still completely up at the time this notification arrives, so if the services of other components are required to go down this is the right point in time to do that (e.g. send important data to a storage component).

    method shutdown : unit -> unit

A user-supplied function that is called when a shutdown notification arrives. That means that the container should terminate ASAP. There is, however, no time limitation. The termination is started by calling the `when_done` function passed to the `process` method.

    method global_exception_handler : exn -> bool

This method is called when an uncaught exception would otherwise terminate the container. It can return `true` to indicate that the container continues running.

    method container_event_system : unit -> Unixqueue.event_system

This method is called to get the event systems for containers. This is normally a `Unixqueue.standard_event_system`, but users can override it.

    method container_run : Unixqueue.event_system -> unit

`container_run esys`: By default, it just runs `esys#run()`. This method is called to run the event system of the containers. Users can override it.