module Netcgi_plex:sig..end
val factory : ?config:Netcgi.config ->
       ?enable:[ `AJP | `FCGI | `SCGI ] list ->
       ?name:string ->
       ?output_type:Netcgi.output_type ->
       ?arg_store:Netcgi.arg_store ->
       ?exn_handler:Netcgi.exn_handler ->
       ?configure:(Netplex_types.config_file ->
                   Netplex_types.address -> Netplex_types.processor_hooks) ->
       (Netplex_types.container -> Netcgi.cgi -> unit) ->
       Netplex_types.processor_factoryReads a Netplex configuration section like
    processor {
      type = "netcgi";          (* or the overridden [name] *)
      timeout = 15;             (* optional *)
      mount_dir = "/url/path";  (* optional *)
      mount_at = "/url/path";   (* optional alternative to mount_dir *)
    }
 and creates a processor for the protocols "fcgi", "scgi",
 and "ajp" (or a subset of these protocols if the enable 
 parameter restricts them). A complete service definition
 looks thus like:
      service {
          name = "name_of_service";
          protocol {
              name = "fcgi";        (* or "scgi" or "ajp" *)
              address {
                  type = "internet";
                  bind = "localhost:<port>";
              };
          };
          (* ... several protocol sections allowed! *)
          processor {
              type = "netcgi";
          };
          workload_manager {
              type = "dynamic";
              max_jobs_per_thread = 1;  (* only reasonable value *)
              min_free_job_capacity = <n>;
              max_free_job_capacity = <n>;
              max_threads = <n>;
          };
      }
 The processor calls the argument function of type container -> cgi -> unit
 for every incoming request.
The timeout parameter specifies when inactive connections are
 timed out (in seconds). The mount_dir and mount_at parameters
 define which part of the URL is considered as SCRIPT_NAME:
mount_dir nor mount_at) are given
   SCRIPT_NAME is determined in a protocol-dependent way. Usually,
   the server transmits SCRIPT_NAME, but see the note below.mount_dir is present, the processor accepts only URLs
   that have this path as true prefix directory, i.e. the URL path
   is <mount_dir>/<name><rest>. The part <mount_dir>/<name>
   is taken as SCRIPT_NAME.mount_at is present, the processor accepts only URLs
   that have this path as prefix, i.e. the URL path is
   <mount_at><rest>. <mount_at> is taken as SCRIPT_NAME.The background is that SCRIPT_NAME is commonly used to
 distinghuish between different web actions of the netcgi
 application. The actions are simply names in a directory like
 /bin/<name> or /servlet/<name>. Not all web servers/protocols
 transmit good values for SCRIPT_NAME, however. By specifying
 mount_dir or mount_at one can force to interpret a certain
 prefix of the request URL as SCRIPT_NAME.
config : The Netcgi configuration to use, default is
    Netcgi.default_configenable : Which protocols to support. Default is to
    support all protocolsname : Defines the name of the processor. Default is "netcgi".output_type : Default: `Direct ""arg_store : Default: `Automatic for all arguments.exn_handler : See Netcgi.exn_handler.  Default: delegate
      all exceptions to the default handler.configure : Parameters are the netplex configuration file
     and the address of the processor section. The configure
     function can look for additional parameters. It returns
     service hooks that are added to the resulting processor.The following functions create the processors directly
typemountpoint =[ `Mount_at of string | `Mount_dir of string ]
val fcgi_processor : ?config:Netcgi.config ->
       ?output_type:Netcgi.output_type ->
       ?arg_store:Netcgi.arg_store ->
       ?exn_handler:Netcgi.exn_handler ->
       ?timeout:float ->
       ?mount:mountpoint ->
       (Netplex_types.container -> Netcgi_fcgi.cgi -> unit) ->
       Netplex_types.processor
val scgi_processor : ?config:Netcgi.config ->
       ?output_type:Netcgi.output_type ->
       ?arg_store:Netcgi.arg_store ->
       ?exn_handler:Netcgi.exn_handler ->
       ?timeout:float ->
       ?mount:mountpoint ->
       (Netplex_types.container -> Netcgi.cgi -> unit) -> Netplex_types.processor
val ajp_processor : ?config:Netcgi.config ->
       ?output_type:Netcgi.output_type ->
       ?arg_store:Netcgi.arg_store ->
       ?exn_handler:Netcgi.exn_handler ->
       ?timeout:float ->
       ?mount:mountpoint ->
       (Netplex_types.container -> Netcgi.cgi -> unit) -> Netplex_types.processor
        