Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 535a7a10fe62254ee9ca7e6375f081a9 > files > 243

ocaml-ocamlnet-2.2.7-4mdv2008.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="previous" href="Netcgi_porting.html">
<link rel="next" href="Http_client.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of class attributes" rel=Appendix href="index_attributes.html">
<link title="Index of class methods" rel=Appendix href="index_methods.html">
<link title="Index of classes" rel=Appendix href="index_classes.html">
<link title="Index of class types" rel=Appendix href="index_class_types.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html">
<link title="Equeue" rel="Chapter" href="Equeue.html">
<link title="Unixqueue" rel="Chapter" href="Unixqueue.html">
<link title="Uq_engines" rel="Chapter" href="Uq_engines.html">
<link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html">
<link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html">
<link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html">
<link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html">
<link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html">
<link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html">
<link title="Netcgi" rel="Chapter" href="Netcgi.html">
<link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html">
<link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html">
<link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html">
<link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html">
<link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html">
<link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html">
<link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html">
<link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html">
<link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html">
<link title="Http_client" rel="Chapter" href="Http_client.html">
<link title="Telnet_client" rel="Chapter" href="Telnet_client.html">
<link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html">
<link title="Ftp_client" rel="Chapter" href="Ftp_client.html">
<link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html">
<link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html">
<link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html">
<link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html">
<link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html">
<link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html">
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
<link title="Netplex_types" rel="Chapter" href="Netplex_types.html">
<link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html">
<link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html">
<link title="Netplex_log" rel="Chapter" href="Netplex_log.html">
<link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html">
<link title="Netplex_container" rel="Chapter" href="Netplex_container.html">
<link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html">
<link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html">
<link title="Netplex_main" rel="Chapter" href="Netplex_main.html">
<link title="Netplex_config" rel="Chapter" href="Netplex_config.html">
<link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html">
<link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html">
<link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html">
<link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html">
<link title="Netshm" rel="Chapter" href="Netshm.html">
<link title="Netshm_data" rel="Chapter" href="Netshm_data.html">
<link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html">
<link title="Netshm_array" rel="Chapter" href="Netshm_array.html">
<link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html">
<link title="Netconversion" rel="Chapter" href="Netconversion.html">
<link title="Netchannels" rel="Chapter" href="Netchannels.html">
<link title="Netstream" rel="Chapter" href="Netstream.html">
<link title="Mimestring" rel="Chapter" href="Mimestring.html">
<link title="Netmime" rel="Chapter" href="Netmime.html">
<link title="Netsendmail" rel="Chapter" href="Netsendmail.html">
<link title="Neturl" rel="Chapter" href="Neturl.html">
<link title="Netaddress" rel="Chapter" href="Netaddress.html">
<link title="Netbuffer" rel="Chapter" href="Netbuffer.html">
<link title="Netdate" rel="Chapter" href="Netdate.html">
<link title="Netencoding" rel="Chapter" href="Netencoding.html">
<link title="Netulex" rel="Chapter" href="Netulex.html">
<link title="Netaccel" rel="Chapter" href="Netaccel.html">
<link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html">
<link title="Nethtml" rel="Chapter" href="Nethtml.html">
<link title="Netstring_str" rel="Chapter" href="Netstring_str.html">
<link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
<link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html">
<link title="Netmappings" rel="Chapter" href="Netmappings.html">
<link title="Netaux" rel="Chapter" href="Netaux.html">
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
<link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html">
<link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html">
<link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html">
<link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html">
<link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html">
<link title="Netsys" rel="Chapter" href="Netsys.html">
<link title="Netpop" rel="Chapter" href="Netpop.html">
<link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html">
<link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html">
<link title="Rpc_time" rel="Chapter" href="Rpc_time.html">
<link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html">
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
<link title="Xdr" rel="Chapter" href="Xdr.html">
<link title="Rpc" rel="Chapter" href="Rpc.html">
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
<link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html">
<link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html">
<link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html">
<link title="Rpc_client" rel="Chapter" href="Rpc_client.html">
<link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html">
<link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html">
<link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html">
<link title="Rpc_server" rel="Chapter" href="Rpc_server.html">
<link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html">
<link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html">
<link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html">
<link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html">
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
<link title="Shell_sys" rel="Chapter" href="Shell_sys.html">
<link title="Shell" rel="Chapter" href="Shell.html">
<link title="Shell_uq" rel="Chapter" href="Shell_uq.html">
<link title="Shell_mt" rel="Chapter" href="Shell_mt.html">
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><link title="Factory" rel="Section" href="#2_Factory">
<link title="Processors" rel="Section" href="#2_Processors">
<title>Ocamlnet 2 Reference Manual : Netcgi_plex</title>
</head>
<body>
<div class="navbar"><a href="Netcgi_porting.html">Previous</a>
&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="Http_client.html">Next</a>
</div>
<center><h1>Module <a href="type_Netcgi_plex.html">Netcgi_plex</a></h1></center>
<br>
<pre><span class="keyword">module</span> Netcgi_plex: <code class="code">sig</code> <a href="Netcgi_plex.html">..</a> <code class="code">end</code></pre><a name="1_NetplexsupportforFastCGISCGIandAJPconnectors"></a>
<h1>Netplex support for FastCGI, SCGI and AJP connectors</h1><br>
<hr width="100%">
<br>
<a name="2_Factory"></a>
<h2>Factory</h2><br>
<pre><span class="keyword">val</span> <a name="VALfactory"></a>factory : <code class="type">?config:<a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br>       ?enable:[ `AJP | `FCGI | `SCGI ] list -><br>       ?name:string -><br>       ?output_type:<a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br>       ?arg_store:<a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br>       ?exn_handler:<a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -><br>       (<a href="Netplex_types.container.html">Netplex_types.container</a> -> <a href="Netcgi.cgi.html">Netcgi.cgi</a> -> unit) -><br>       <a href="Netplex_types.processor_factory.html">Netplex_types.processor_factory</a></code></pre><div class="info">
Reads a Netplex configuration section like
 <pre><code class="code">    processor {
      type = "netcgi";          (* or the overridden [name] *)
      timeout = 15;             (* optional *)
      mount_dir = "/url/path";  (* optional *)
      mount_at = "/url/path";   (* optional alternative to mount_dir *)
    }
 </code></pre>
<p>

 and creates a processor for the protocols "fcgi", "scgi",
 and "ajp" (or a subset of these protocols if the <code class="code">enable</code> 
 parameter restricts them). A complete service definition
 looks thus like:
<p>

 <pre><code class="code">      service {
          name = "name_of_service";
          protocol {
              name = "fcgi";        (* or "scgi" or "ajp" *)
              address {
                  type = "internet";
                  bind = "localhost:&lt;port&gt;";
              };
          };
          (* ... several protocol sections allowed! *)
          processor {
              type = "netcgi";
          };
          workload_manager {
              type = "dynamic";
              max_jobs_per_thread = 1;  (* only reasonable value *)
              min_free_job_capacity = &lt;n&gt;;
              max_free_job_capacity = &lt;n&gt;;
              max_threads = &lt;n&gt;;
          };
      }
 </code></pre>
<p>

 The processor calls the argument function of type <code class="code">container -&gt; cgi -&gt; unit</code>
 for every incoming request.
<p>

 The <code class="code">timeout</code> parameter specifies when inactive connections are
 timed out (in seconds). The <code class="code">mount_dir</code> and <code class="code">mount_at</code> parameters
 define which part of the URL is considered as <code class="code">SCRIPT_NAME</code>:
<p>
<ul>
<li>By default (if neither <code class="code">mount_dir</code> nor <code class="code">mount_at</code>) are given
   <code class="code">SCRIPT_NAME</code> is determined in a protocol-dependent way. Usually,
   the server transmits <code class="code">SCRIPT_NAME</code>, but see the note below.</li>
<li>If <code class="code">mount_dir</code> is present, the processor accepts only URLs
   that have this path as true prefix directory, i.e. the URL path
   is <code class="code">&lt;mount_dir&gt;/&lt;name&gt;&lt;rest&gt;</code>. The part <code class="code">&lt;mount_dir&gt;/&lt;name&gt;</code>
   is taken as <code class="code">SCRIPT_NAME</code>.</li>
<li>If <code class="code">mount_at</code> is present, the processor accepts only URLs
   that have this path as prefix, i.e. the URL path is
   <code class="code">&lt;mount_at&gt;&lt;rest&gt;</code>. <code class="code">&lt;mount_at&gt;</code> is taken as <code class="code">SCRIPT_NAME</code>.</li>
</ul>

 The background is that <code class="code">SCRIPT_NAME</code> is commonly used to
 distinghuish between different web actions of the netcgi
 application. The actions are simply names in a directory like
 <code class="code">/bin/&lt;name&gt;</code> or <code class="code">/servlet/&lt;name&gt;</code>. Not all web servers/protocols
 transmit good values for <code class="code">SCRIPT_NAME</code>, however. By specifying
 <code class="code">mount_dir</code> or <code class="code">mount_at</code> one can force to interpret a certain
 prefix of the request URL as <code class="code">SCRIPT_NAME</code>.
<p>

<br>
</div>
<div class="param_info"><code class="code">config</code> : The Netcgi configuration to use, default is
    <a href="Netcgi.html#VALdefault_config"><code class="code">Netcgi.default_config</code></a></div>
<div class="param_info"><code class="code">enable</code> : Which protocols to support. Default is to
    support all protocols</div>
<div class="param_info"><code class="code">name</code> : Defines the name of the processor. Default is "netcgi".</div>
<div class="param_info"><code class="code">output_type</code> : Default: <code class="code">`Direct ""</code></div>
<div class="param_info"><code class="code">arg_store</code> : Default: <code class="code">`Automatic</code> for all arguments.</div>
<div class="param_info"><code class="code">exn_handler</code> : See <a href="Netcgi.html#TYPEexn_handler"><code class="code">Netcgi.exn_handler</code></a>.  Default: delegate
      all exceptions to the default handler.</div>
<br>
<a name="2_Processors"></a>
<h2>Processors</h2><br>
<br>
The following functions create the processors directly<br>
<pre><span class="keyword">type</span> <a name="TYPEmountpoint"></a><code class="type"></code>mountpoint = <code class="type">[ `Mount_at of string | `Mount_dir of string ]</code> </pre>

<pre><span class="keyword">val</span> <a name="VALfcgi_processor"></a>fcgi_processor : <code class="type">?config:<a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br>       ?output_type:<a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br>       ?arg_store:<a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br>       ?exn_handler:<a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -><br>       ?timeout:float -><br>       ?mount:<a href="Netcgi_plex.html#TYPEmountpoint">mountpoint</a> -><br>       (<a href="Netplex_types.container.html">Netplex_types.container</a> -> <a href="Netcgi_fcgi.cgi.html">Netcgi_fcgi.cgi</a> -> unit) -><br>       <a href="Netplex_types.processor.html">Netplex_types.processor</a></code></pre><pre><span class="keyword">val</span> <a name="VALscgi_processor"></a>scgi_processor : <code class="type">?config:<a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br>       ?output_type:<a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br>       ?arg_store:<a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br>       ?exn_handler:<a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -><br>       ?timeout:float -><br>       ?mount:<a href="Netcgi_plex.html#TYPEmountpoint">mountpoint</a> -><br>       (<a href="Netplex_types.container.html">Netplex_types.container</a> -> <a href="Netcgi.cgi.html">Netcgi.cgi</a> -> unit) -> <a href="Netplex_types.processor.html">Netplex_types.processor</a></code></pre><pre><span class="keyword">val</span> <a name="VALajp_processor"></a>ajp_processor : <code class="type">?config:<a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br>       ?output_type:<a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br>       ?arg_store:<a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br>       ?exn_handler:<a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -><br>       ?timeout:float -><br>       ?mount:<a href="Netcgi_plex.html#TYPEmountpoint">mountpoint</a> -><br>       (<a href="Netplex_types.container.html">Netplex_types.container</a> -> <a href="Netcgi.cgi.html">Netcgi.cgi</a> -> unit) -> <a href="Netplex_types.processor.html">Netplex_types.processor</a></code></pre></body></html>