Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 1abfe597bc89458ccaa645cd148862bb > files > 496

ocaml-ocamlnet-doc-3.7.3-3.mga4.noarch.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="Nethttp.html">
<link rel="next" href="Netfs.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="Unixqueue_pollset" rel="Chapter" href="Unixqueue_pollset.html">
<link title="Unixqueue_select" rel="Chapter" href="Unixqueue_select.html">
<link title="Uq_resolver" rel="Chapter" href="Uq_resolver.html">
<link title="Uq_engines" rel="Chapter" href="Uq_engines.html">
<link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html">
<link title="Uq_io" rel="Chapter" href="Uq_io.html">
<link title="Uq_lwt" rel="Chapter" href="Uq_lwt.html">
<link title="Uq_libevent" rel="Chapter" href="Uq_libevent.html">
<link title="Uq_mt" rel="Chapter" href="Uq_mt.html">
<link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html">
<link title="Equeue_howto" rel="Chapter" href="Equeue_howto.html">
<link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html">
<link title="Https_client" rel="Chapter" href="Https_client.html">
<link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html">
<link title="Netcamlbox" rel="Chapter" href="Netcamlbox.html">
<link title="Netcgi_apache" rel="Chapter" href="Netcgi_apache.html">
<link title="Netcgi_modtpl" rel="Chapter" href="Netcgi_modtpl.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_conncache" rel="Chapter" href="Http_client_conncache.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="Http_fs" rel="Chapter" href="Http_fs.html">
<link title="Ftp_fs" rel="Chapter" href="Ftp_fs.html">
<link title="Netclient_tut" rel="Chapter" href="Netclient_tut.html">
<link title="Netgssapi" rel="Chapter" href="Netgssapi.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_util" rel="Chapter" href="Nethttpd_util.html">
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
<link title="Netmech_scram" rel="Chapter" href="Netmech_scram.html">
<link title="Netmech_scram_gssapi" rel="Chapter" href="Netmech_scram_gssapi.html">
<link title="Netmcore" rel="Chapter" href="Netmcore.html">
<link title="Netmcore_camlbox" rel="Chapter" href="Netmcore_camlbox.html">
<link title="Netmcore_mempool" rel="Chapter" href="Netmcore_mempool.html">
<link title="Netmcore_heap" rel="Chapter" href="Netmcore_heap.html">
<link title="Netmcore_ref" rel="Chapter" href="Netmcore_ref.html">
<link title="Netmcore_array" rel="Chapter" href="Netmcore_array.html">
<link title="Netmcore_sem" rel="Chapter" href="Netmcore_sem.html">
<link title="Netmcore_mutex" rel="Chapter" href="Netmcore_mutex.html">
<link title="Netmcore_condition" rel="Chapter" href="Netmcore_condition.html">
<link title="Netmcore_queue" rel="Chapter" href="Netmcore_queue.html">
<link title="Netmcore_buffer" rel="Chapter" href="Netmcore_buffer.html">
<link title="Netmcore_matrix" rel="Chapter" href="Netmcore_matrix.html">
<link title="Netmcore_hashtbl" rel="Chapter" href="Netmcore_hashtbl.html">
<link title="Netmcore_process" rel="Chapter" href="Netmcore_process.html">
<link title="Netmcore_tut" rel="Chapter" href="Netmcore_tut.html">
<link title="Netmcore_basics" rel="Chapter" href="Netmcore_basics.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_semaphore" rel="Chapter" href="Netplex_semaphore.html">
<link title="Netplex_sharedvar" rel="Chapter" href="Netplex_sharedvar.html">
<link title="Netplex_mutex" rel="Chapter" href="Netplex_mutex.html">
<link title="Netplex_encap" rel="Chapter" href="Netplex_encap.html">
<link title="Netplex_mbox" rel="Chapter" href="Netplex_mbox.html">
<link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html">
<link title="Netplex_advanced" rel="Chapter" href="Netplex_advanced.html">
<link title="Netplex_admin" rel="Chapter" href="Netplex_admin.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="Netmappings" rel="Chapter" href="Netmappings.html">
<link title="Netaux" rel="Chapter" href="Netaux.html">
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
<link title="Netpagebuffer" rel="Chapter" href="Netpagebuffer.html">
<link title="Netfs" rel="Chapter" href="Netfs.html">
<link title="Netglob" rel="Chapter" href="Netglob.html">
<link title="Netauth" rel="Chapter" href="Netauth.html">
<link title="Netsockaddr" rel="Chapter" href="Netsockaddr.html">
<link title="Netnumber" rel="Chapter" href="Netnumber.html">
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
<link title="Xdr_mstring" rel="Chapter" href="Xdr_mstring.html">
<link title="Xdr" rel="Chapter" href="Xdr.html">
<link title="Netcompression" rel="Chapter" href="Netcompression.html">
<link title="Netunichar" rel="Chapter" href="Netunichar.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="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
<link title="Netsys" rel="Chapter" href="Netsys.html">
<link title="Netsys_posix" rel="Chapter" href="Netsys_posix.html">
<link title="Netsys_pollset" rel="Chapter" href="Netsys_pollset.html">
<link title="Netlog" rel="Chapter" href="Netlog.html">
<link title="Netexn" rel="Chapter" href="Netexn.html">
<link title="Netsys_win32" rel="Chapter" href="Netsys_win32.html">
<link title="Netsys_pollset_posix" rel="Chapter" href="Netsys_pollset_posix.html">
<link title="Netsys_pollset_win32" rel="Chapter" href="Netsys_pollset_win32.html">
<link title="Netsys_pollset_generic" rel="Chapter" href="Netsys_pollset_generic.html">
<link title="Netsys_signal" rel="Chapter" href="Netsys_signal.html">
<link title="Netsys_oothr" rel="Chapter" href="Netsys_oothr.html">
<link title="Netsys_xdr" rel="Chapter" href="Netsys_xdr.html">
<link title="Netsys_rng" rel="Chapter" href="Netsys_rng.html">
<link title="Netsys_types" rel="Chapter" href="Netsys_types.html">
<link title="Netsys_mem" rel="Chapter" href="Netsys_mem.html">
<link title="Netsys_tmp" rel="Chapter" href="Netsys_tmp.html">
<link title="Netsys_sem" rel="Chapter" href="Netsys_sem.html">
<link title="Netsys_pmanage" rel="Chapter" href="Netsys_pmanage.html">
<link title="Netgzip" rel="Chapter" href="Netgzip.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="Rpc" rel="Chapter" href="Rpc.html">
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
<link title="Rpc_util" rel="Chapter" href="Rpc_util.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_auth_gssapi" rel="Chapter" href="Rpc_auth_gssapi.html">
<link title="Rpc_proxy" rel="Chapter" href="Rpc_proxy.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_intro_gss" rel="Chapter" href="Rpc_intro_gss.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_fs" rel="Chapter" href="Shell_fs.html">
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html">
<link title="Intro" rel="Chapter" href="Intro.html">
<link title="Platform" rel="Chapter" href="Platform.html">
<link title="Foreword" rel="Chapter" href="Foreword.html">
<link title="Ipv6" rel="Chapter" href="Ipv6.html">
<link title="Regexp" rel="Chapter" href="Regexp.html"><link title="Searching" rel="Section" href="#2_Searching">
<title>Ocamlnet 3 Reference Manual : Netpagebuffer</title>
</head>
<body>
<div class="navbar"><a class="pre" href="Nethttp.html" title="Nethttp">Previous</a>
&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;<a class="post" href="Netfs.html" title="Netfs">Next</a>
</div>
<h1>Module <a href="type_Netpagebuffer.html">Netpagebuffer</a></h1>
<pre><span class="keyword">module</span> Netpagebuffer: <code class="code">sig</code> <a href="Netpagebuffer.html">..</a> <code class="code">end</code></pre><div class="info">
Buffer for page-aligned I/O<br>
</div>
<hr width="100%">
<br>
This kind of buffer uses page-aligned bigarrays. Data can only be
    added to the end, or deleted at the beginning of the buffer.
<p>

    The idea of this buffer is that input data is added to the last
    page of the buffer only (with <code class="code">add_inplace</code>). If then all previous
    input was already a multiple of the page size, it is ensured that
    the new input is added at a page boundary. This kind of input operation
    can often be accelerated by the OS ("zero copy network I/O").<br>
<pre><span id="TYPEt"><span class="keyword">type</span> <code class="type"></code>t</span> </pre>

<pre><span id="VALcreate"><span class="keyword">val</span> create</span> : <code class="type">int -> <a href="Netpagebuffer.html#TYPEt">t</a></code></pre><div class="info">
create <code class="code">blocksize</code>: creates new buffer with this <code class="code">blocksize</code>, which must
      be a whole multiple of the page size of the OS
<p>

      The <code class="code">blocksize</code> is normally either<ul>
<li><a href="Netsys_mem.html#VALdefault_block_size"><code class="code">Netsys_mem.default_block_size</code></a>, or</li>
<li><a href="Netsys_mem.html#VALsmall_block_size"><code class="code">Netsys_mem.small_block_size</code></a></li>
</ul>

      These cases are optimized, and the buffer is allocated in a shared
      pool.<br>
</div>
<pre><span id="VALcontents"><span class="keyword">val</span> contents</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> string</code></pre><div class="info">
Returns the contents as string<br>
</div>
<pre><span id="VALlength"><span class="keyword">val</span> length</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int</code></pre><div class="info">
The length<br>
</div>
<pre><span id="VALsub"><span class="keyword">val</span> sub</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> int -> string</code></pre><div class="info">
Returns a substring<br>
</div>
<pre><span id="VALblit_to_string"><span class="keyword">val</span> blit_to_string</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> string -> int -> int -> unit</code></pre><div class="info">
Blits contents to a string<br>
</div>
<pre><span id="VALblit_to_memory"><span class="keyword">val</span> blit_to_memory</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> <a href="Netsys_mem.html#TYPEmemory">Netsys_mem.memory</a> -> int -> int -> unit</code></pre><div class="info">
Blits contents to another memory buffer<br>
</div>
<pre><span id="VALadd_string"><span class="keyword">val</span> add_string</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> string -> unit</code></pre><div class="info">
Adds a string to the end of the buffer<br>
</div>
<pre><span id="VALadd_sub_string"><span class="keyword">val</span> add_sub_string</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> string -> int -> int -> unit</code></pre><div class="info">
Adds a sub string to the end of the buffer<br>
</div>
<pre><span id="VALadd_sub_memory"><span class="keyword">val</span> add_sub_memory</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> <a href="Netsys_mem.html#TYPEmemory">Netsys_mem.memory</a> -> int -> int -> unit</code></pre><div class="info">
Adds a sub memory buffer to the end of the buffer<br>
</div>
<pre><span id="VALadd_inplace"><span class="keyword">val</span> add_inplace</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> (<a href="Netsys_mem.html#TYPEmemory">Netsys_mem.memory</a> -> int -> int -> int) -> int</code></pre><div class="info">
<code class="code">add_inplace b f</code>: Calls <code class="code">f m pos len</code> where <code class="code">m</code> is the last page
      of the buffer, and <code class="code">pos</code> is the first free byte on the page, and
      <code class="code">len</code> is the number of free bytes on the page. The function <code class="code">f</code> is
      expected to store new data in <code class="code">m</code> from <code class="code">pos</code> to <code class="code">pos+n-1</code> and to
      return <code class="code">n</code>. The number <code class="code">n</code> is also returned as final result.
<p>

      It is ensured that <code class="code">f</code> is called with a value of <code class="code">len&gt;=1</code>.<br>
</div>
<pre><span id="VALpage_for_additions"><span class="keyword">val</span> page_for_additions</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> <a href="Netsys_mem.html#TYPEmemory">Netsys_mem.memory</a> * int * int</code></pre><div class="info">
<code class="code">let (m,pos,len) = page_for_additions b</code>: Returns the last page 
      in <code class="code">m</code>, the first free byte on the page in <code class="code">pos</code>, and 
      the number of free bytes on the page in <code class="code">len</code>. (The same values
      the function <code class="code">f</code> would have got as arguments in <code class="code">add_inplace</code>.)<br>
</div>
<pre><span id="VALadvance"><span class="keyword">val</span> advance</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> unit</code></pre><div class="info">
<code class="code">advance b n</code>: Marks further <code class="code">n</code> bytes in the last page of the
      buffer as used. These bytes are not modified in any way - it is
      expected that the user calls <code class="code">page_for_additions</code> first, and sets
      these <code class="code">n</code> bytes to new values directly.<br>
</div>
<pre><span id="VALpage_for_consumption"><span class="keyword">val</span> page_for_consumption</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> <a href="Netsys_mem.html#TYPEmemory">Netsys_mem.memory</a> * int * int</code></pre><div class="info">
<code class="code">let (m,pos,len) = page_for_consumption b</code>: Returns the first page 
      in <code class="code">m</code>, the first used byte on the page in <code class="code">pos</code>, and 
      the number of used bytes on the page in <code class="code">len</code>.<br>
</div>
<pre><span id="VALdelete_hd"><span class="keyword">val</span> delete_hd</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> unit</code></pre><div class="info">
<code class="code">delete_hd b n</code>: Deletes <code class="code">n</code> bytes from the beginning of the buffer<br>
</div>
<pre><span id="VALclear"><span class="keyword">val</span> clear</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> unit</code></pre><div class="info">
Deletes all contents of the buffer<br>
</div>
<br>
<h2 id="2_Searching">Searching</h2><br>
<pre><span id="VALindex_from"><span class="keyword">val</span> index_from</span> : <code class="type"><a href="Netpagebuffer.html#TYPEt">t</a> -> int -> char -> int</code></pre><div class="info">
<code class="code">index_from nb k c</code>: Searches the character <code class="code">c</code> in the buffer beginning
 at position <code class="code">k</code>. If found, the position of the left-most occurence is
 returned. Otherwise, <code class="code">Not_found</code> is raised.<br>
</div>
</body></html>