Sophie

Sophie

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

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.cgi_environment.html">
<link rel="next" href="Netcgi.cgi_activation.html">
<link rel="Up" href="Netcgi.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="Arguments -- data sent to the script" rel="Section" href="#3_Argumentsdatasenttothescript">
<link title="Self-referencing URL" rel="Section" href="#3_SelfreferencingURL">
<link title="Outputting" rel="Section" href="#3_Outputting">
<title>Ocamlnet 2 Reference Manual : Netcgi.cgi</title>
</head>
<body>
<div class="navbar"><a href="Netcgi.cgi_environment.html">Previous</a>
&nbsp;<a href="Netcgi.html">Up</a>
&nbsp;<a href="Netcgi.cgi_activation.html">Next</a>
</div>
<center><h1>Class type <a href="type_Netcgi.cgi.html">Netcgi.cgi</a></h1></center>
<br>
<pre><span class="keyword">class type</span> <a name="TYPEcgi"></a>cgi = <code class="code">object</code> <a href="Netcgi.cgi.html">..</a> <code class="code">end</code></pre>Object symbolizing a CGI-like request/response cycle.
<p>

    This is the minimal set of services a connector must provide.
    Additional methods may be defined for specific connectors.<br>
<hr width="100%">
<a name="3_Argumentsdatasenttothescript"></a>
<h3>Arguments -- data sent to the script</h3><pre><span class="keyword">method</span> <a name="METHODargument"></a>argument : <code class="type">string -> <a href="Netcgi.cgi_argument.html">cgi_argument</a></code></pre><div class="info">
<code class="code">#argument name</code> returns the value of the argument named <code class="code">name</code>.
        If the argument appears several times, only one of its
        instances is used.<br>
<b>Raises</b> <code>Not_found</code> if no such argument exists.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODargument_value"></a>argument_value : <code class="type">?default:string -> string -> string</code></pre><div class="info">
<code class="code">#argument_value</code> returns the value of the argument as a
        string.  If the argument does not exist, the <code class="code">default</code> is
        returned.<br>
</div>
<div class="param_info"><code class="code">default</code> : defaults to <code class="code">""</code>.</div>
<pre><span class="keyword">method</span> <a name="METHODargument_exists"></a>argument_exists : <code class="type">string -> bool</code></pre><div class="info">
<code class="code">#argument_exists</code> returns <code class="code">false</code> if the named parameter is
        missing and <code class="code">true</code> otherwise.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODmultiple_argument"></a>multiple_argument : <code class="type">string -> <a href="Netcgi.cgi_argument.html">cgi_argument</a> list</code></pre><div class="info">
<code class="code">#multiple_argument name</code> returns all the values of the
	argument named <code class="code">name</code>.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODarguments"></a>arguments : <code class="type"><a href="Netcgi.cgi_argument.html">cgi_argument</a> list</code></pre><div class="info">
The complete list of arguments.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODenvironment"></a>environment : <code class="type"><a href="Netcgi.cgi_environment.html">cgi_environment</a></code></pre><div class="info">
The environment object.  This object is the "outer layer" of the
        activation object that connects it with real I/O channels.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODrequest_method"></a>request_method : <code class="type">[ `DELETE | `GET | `HEAD | `POST | `PUT of <a href="Netcgi.cgi_argument.html">cgi_argument</a> ]</code></pre><div class="info">
The HTTP method used to make the request.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODfinalize"></a>finalize : <code class="type">unit -> unit</code></pre><div class="info">
This method calls <code class="code">#finalize</code> for every CGI argument
        (including the possible one of PUT) to ensure that all files
        are deleted.  It also executes all functions registered with
        <code class="code">#at_exit</code>.  It does not close the in/out channels, however.
        This method is not registered in the garbage collector, and it
        is a bad idea to do so.  However, all connectors offered in
        Netcgi automatically call <code class="code">#finalize</code> at the end of the
        request cycle (even when its terminated by an uncaught exception
        when <code class="code">#config.default_exn_handler</code> is true) so you do not have
        to worry much about calling it yourself.<br>
</div>
<a name="3_SelfreferencingURL"></a>
<h3>Self-referencing URL</h3><pre><span class="keyword">method</span> <a name="METHODurl"></a>url : <code class="type">?protocol:<a href="Nethttp.html#TYPEprotocol">Nethttp.protocol</a> -><br>       ?with_authority:<a href="Netcgi.html#TYPEother_url_spec">other_url_spec</a> -><br>       ?with_script_name:<a href="Netcgi.html#TYPEother_url_spec">other_url_spec</a> -><br>       ?with_path_info:<a href="Netcgi.html#TYPEother_url_spec">other_url_spec</a> -><br>       ?with_query_string:<a href="Netcgi.html#TYPEquery_string_spec">query_string_spec</a> -> unit -> string</code></pre><div class="info">
Returns the URL of the current CGI-like script.  (Note that it
	may differ from the actual URL that requested the script if,
	for example, rewriting rules were specified in the web server
	configuration.)<br>
</div>
<div class="param_info"><code class="code">protocol</code> : The URL scheme.  By default, the URL scheme is
        used that is described in the environment</div>
<div class="param_info"><code class="code">with_authority</code> : Whether to include authority part
        (e.g. http or https) of the URL, and if yes, from which
        source.  Default: <code class="code">`Env</code>.</div>
<div class="param_info"><code class="code">with_script_name</code> : Whether to include the part of the URL
        path identifying the CGI script, and if yes, from which
        source.  Default: <code class="code">`Env</code>.</div>
<div class="param_info"><code class="code">with_path_info</code> : Whether to include the rest of the URL
        path exceeding the script name, and if yes, from which source.
        Default: <code class="code">`Env</code>.</div>
<div class="param_info"><code class="code">with_query_string</code> : Whether to include a query string,
        and if yes, which one.  Only arguments with <code class="code">#store</code> being
        <code class="code">`Memory</code> will be added.  Default: <code class="code">`None</code>, i.e. no query
        string.</div>
<a name="3_Outputting"></a>
<h3>Outputting</h3><pre><span class="keyword">method</span> <a name="METHODset_header"></a>set_header : <code class="type">?status:<a href="Nethttp.html#TYPEhttp_status">Nethttp.http_status</a> -><br>       ?content_type:string -><br>       ?content_length:int -><br>       ?set_cookie:<a href="Nethttp.html#TYPEcookie">Nethttp.cookie</a> list -><br>       ?set_cookies:<a href="Netcgi.Cookie.html#TYPEt">Cookie.t</a> list -><br>       ?cache:<a href="Netcgi.html#TYPEcache_control">cache_control</a> -><br>       ?filename:string -><br>       ?language:string -><br>       ?script_type:string -><br>       ?style_type:string -> ?fields:(string * string list) list -> unit -> unit</code></pre><div class="info">
Sets the header (removing any previous one).  When the output
        channel supports transactions, it is possible to set the
        header (possibly several times) until the <code class="code">#out_channel</code> is
        commited for the first time or <code class="code">#env#send_output_header()</code> is
        called.  When there is no support for transactions, the header
        must be set before the first byte of output is written.
<p>

        If <code class="code">#set_header</code> is called a second time, it will overwrite
        <i>all</i> the header fields.<br>
</div>
<div class="param_info"><code class="code">status</code> : Sets the HTTP status of the reply according to
	<a href="http://www.w3.org/Protocols/rfc2616">RFC 2616</a>.  Defaults to
	"no status", but the server normally complements an <code class="code">`Ok</code>
	status in this case.</div>
<div class="param_info"><code class="code">content_type</code> : Sets the content type.
	Defaults to <code class="code">"text/html"</code>.</div>
<div class="param_info"><code class="code">content_length</code> : Sets the content length (in bytes).
	Default: No such field.</div>
<div class="param_info"><code class="code">set_cookie</code> : Deprecated, use <code class="code">set_cookies</code>.</div>
<div class="param_info"><code class="code">set_cookies</code> : Sets a number of cookies.  Default: <code class="code">[]</code>.
	Remember that the browser may not support more than 20 cookies
	per web server.  You can query the cookies using <code class="code">env#cookies</code>
	and <code class="code">env#cookie</code>.  If you set cookies, you want to think about
	an appropriate <code class="code">cache</code> setting.  You may also want to add a
	<a href="http://www.w3.org/P3P/">P3P</a> header (Platform for Privacy
	Preferences) -- otherwise your cookies may be discarded by
	some browsers.</div>
<div class="param_info"><code class="code">cache</code> : Sets the cache behavior for replies to GET
        requests.  The default is <code class="code">`Unspecified</code>.  <b>It is strongly
        recommended to specify the caching behaviour!!!</b> You are on
        the safe side with <code class="code">`No_cache</code>, forcing every page to be
        regenerated. If your data do not change frequently, <code class="code">`Max_age
        n</code> tells the caches to store the data at most <code class="code">n</code> seconds.</div>
<div class="param_info"><code class="code">filename</code> : Sets the filename associated with the page.
        This filename is taken for the "save as..."  dialog.  Default:
        <code class="code">""</code>, i.e. no filename.  Note: It is bad practice if the
        filename contains problematic characters (backslash, double
        quote, space), or the names of directories.  It is recommended
        that you set <code class="code">content_type</code> to "application/octet-stream" for
        this feture to work with most browsers and, if possible, to
        set <code class="code">content_length</code> because that usually improves the
        download dialog.)</div>
<div class="param_info"><code class="code">script_type</code> : Sets the language of the script tag (for
        HTML replies).  It is recommended to use this field if there
        are <code class="code">ONXXX</code> attributes containing scripts before the first
        <code class="code">&lt;SCRIPT&gt;</code> element, because you cannot specify the script
        language for the <code class="code">ONXXX</code> attributes otherwise.  <code class="code">script_type</code>
        must be a media type, e.g. "text/javascript".  Default: no
        language is specified.</div>
<div class="param_info"><code class="code">style_type</code> : Sets the language of the style tag (for
        HTML replies).  It is recommended to use this field if there
        are <code class="code">STYLE</code> attributes containing scripts before the first
        <code class="code">&lt;STYLE&gt;</code> element, because you cannot specify the style
        language for the <code class="code">STYLE</code> attributes otherwise.  <code class="code">style_type</code>
        must be a media type, e.g. "text/css".  Default: no language
        is specified.</div>
<div class="param_info"><code class="code">fields</code> : Sets additional fields of the header.  Default: <code class="code">[]</code>.</div>
<pre><span class="keyword">method</span> <a name="METHODset_redirection_header"></a>set_redirection_header : <code class="type">?set_cookies:<a href="Netcgi.Cookie.html#TYPEt">Cookie.t</a> list -><br>       ?fields:(string * string list) list -> string -> unit</code></pre><div class="info">
Sets the header such that a redirection to the specified URL
        is performed.  If the URL begins with "http:" the redirection
        directive is passed back to the client, and the client will
        repeat the request for the new location (with a GET method).
        If the URL begins with "/", the server performs the
        redirection, and it is invisible for the client.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODoutput"></a>output : <code class="type"><a href="Netchannels.trans_out_obj_channel.html">Netchannels.trans_out_obj_channel</a></code></pre><div class="info">
<span class="warning">Deprecated.</span>Use <code class="code">#out_channel</code> instead.<br>
</div>
<pre><span class="keyword">method</span> <a name="METHODout_channel"></a>out_channel : <code class="type"><a href="Netchannels.trans_out_obj_channel.html">Netchannels.trans_out_obj_channel</a></code></pre><div class="info">
The output channel to which the generated content is intended
        to be written.  The header is not stored in this channel, so
        <code class="code">#pos_out</code> returns the size of the DATA in bytes (useful to
        set Content-Length).  Note that HEAD requests must not send
        back a message body so, in this case, all data sent to this
        channel is discarded.  This allows your scripts to work
        unmodified for GET, POST and HEAD requests.
<p>

        The output channel may have transactional semantics, and
        because of this, it is an <code class="code">trans_out_obj_channel</code>.
        Implementations are free to support transactions or not.
<p>

        After all data have been written, the method <code class="code">#commit_work()</code>
        <b>must</b> be called, even if there is no support for
        transactions.
<p>

        Simple Example:
        <pre><code class="code">        cgi # out_channel # output_string "Hello world!\n";
        cgi # out_channel # commit_work()
        </code></pre>
<p>

        Example for an error handler and a transaction buffer: If an
        error happens, it is possible to roll the channel back, and to
        write the error message.
        <pre><code class="code">        try
          cgi # set_header ... ();
          cgi # out_channel # output_string "Hello World!"; ...
          cgi # out_channel # commit_work();
        with err -&gt;
          cgi # out_channel # rollback_work();
          cgi # set_header ... ();
          cgi # out_channel # output_string "Software error!"; ...
          cgi # out_channel # commit_work();
        </code></pre><br>
</div>
<pre><span class="keyword">method</span> <a name="METHODat_exit"></a>at_exit : <code class="type">(unit -> unit) -> unit</code></pre><div class="info">
<code class="code">#at_exit f</code> registers the function <code class="code">f</code> to be executed when
	<code class="code">#finalize</code> is called (which is done automatically when the
	request finishes).  The functions are executed in the reverse
	order in which they were registered.<br>
</div>
</body></html>