<!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="Up" href="Versioned_typed_tcp.Server_msg.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 modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Command" rel="Chapter" href="Command.html"> <link title="File_tail" rel="Chapter" href="File_tail.html"> <link title="File_writer" rel="Chapter" href="File_writer.html"> <link title="Import" rel="Chapter" href="Import.html"> <link title="Lock_file" rel="Chapter" href="Lock_file.html"> <link title="Log" rel="Chapter" href="Log.html"> <link title="Persistent_singleton" rel="Chapter" href="Persistent_singleton.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_intf" rel="Chapter" href="Rpc_intf.html"> <link title="Std" rel="Chapter" href="Std.html"> <link title="Tcp" rel="Chapter" href="Tcp.html"> <link title="Tcp_file" rel="Chapter" href="Tcp_file.html"> <link title="Typed_tcp" rel="Chapter" href="Typed_tcp.html"> <link title="Typed_tcp_intf" rel="Chapter" href="Typed_tcp_intf.html"> <link title="Unpack_sequence" rel="Chapter" href="Unpack_sequence.html"> <link title="User_and_group" rel="Chapter" href="User_and_group.html"> <link title="Versioned_rpc" rel="Chapter" href="Versioned_rpc.html"> <link title="Versioned_typed_tcp" rel="Chapter" href="Versioned_typed_tcp.html"> <link title="Weak_hashtbl" rel="Chapter" href="Weak_hashtbl.html"><title>Versioned_typed_tcp.Server_msg.Control</title> </head> <body> <div class="navbar"> <a class="up" href="Versioned_typed_tcp.Server_msg.html" title="Versioned_typed_tcp.Server_msg">Up</a> </div> <h1>Module <a href="type_Versioned_typed_tcp.Server_msg.Control.html">Versioned_typed_tcp.Server_msg.Control</a></h1> <pre><span class="keyword">module</span> Control: <code class="code">sig</code> <a href="Versioned_typed_tcp.Server_msg.Control.html">..</a> <code class="code">end</code></pre><hr width="100%"> <pre><code><span id="TYPEt"><span class="keyword">type</span> <code class="type">'name</code> t</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Unauthorized"><span class="constructor">Unauthorized</span></span> <span class="keyword">of</span> <code class="type">string</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Duplicate"><span class="constructor">Duplicate</span></span> <span class="keyword">of</span> <code class="type">'name</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Wrong_mode"><span class="constructor">Wrong_mode</span></span> <span class="keyword">of</span> <code class="type">'name</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Too_many_clients"><span class="constructor">Too_many_clients</span></span> <span class="keyword">of</span> <code class="type">string</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Almost_full"><span class="constructor">Almost_full</span></span> <span class="keyword">of</span> <code class="type">int</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Connect"><span class="constructor">Connect</span></span> <span class="keyword">of</span> <code class="type">'name</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Disconnect"><span class="constructor">Disconnect</span></span> <span class="keyword">of</span> <code class="type">'name * Core.Std.Sexp.t</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Parse_error"><span class="constructor">Parse_error</span></span> <span class="keyword">of</span> <code class="type">'name * string</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Protocol_error"><span class="constructor">Protocol_error</span></span> <span class="keyword">of</span> <code class="type">string</code></code></td> </tr></table> <pre><span id="VALbin_size_t"><span class="keyword">val</span> bin_size_t</span> : <code class="type">('a -> int) -> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a> -> int</code></pre> <pre><span id="VALbin_write_t_"><span class="keyword">val</span> bin_write_t_</span> : <code class="type">(Core.Std.Bin_prot.Unsafe_common.sptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -> 'a -> Bin_prot.Unsafe_common.sptr) -><br> Core.Std.Bin_prot.Unsafe_common.sptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a> -> Bin_prot.Unsafe_common.sptr</code></pre> <pre><span id="VALbin_write_t"><span class="keyword">val</span> bin_write_t</span> : <code class="type">(Core.Std.Bin_prot.Unsafe_common.sptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -><br> 'a -> Core.Std.Bin_prot.Unsafe_common.sptr) -><br> Core.Std.Bin_prot.Common.buf -><br> pos:Core.Std.Bin_prot.Common.pos -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a> -> Core.Std.Bin_prot.Common.pos</code></pre> <pre><span id="VALbin_writer_t"><span class="keyword">val</span> bin_writer_t</span> : <code class="type">'a Core.Std.Bin_prot.Type_class.writer -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a><br> Core.Std.Bin_prot.Type_class.writer</code></pre> <pre><span id="VALbin_read_t__"><span class="keyword">val</span> bin_read_t__</span> : <code class="type">'a -> 'b -> 'c -> 'd -> 'e</code></pre> <pre><span id="VALbin_read_t_"><span class="keyword">val</span> bin_read_t_</span> : <code class="type">(Core.Std.Bin_prot.Unsafe_common.sptr_ptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -> 'a) -><br> Core.Std.Bin_prot.Unsafe_common.sptr_ptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a></code></pre> <pre><span id="VALbin_read_t"><span class="keyword">val</span> bin_read_t</span> : <code class="type">(Core.Std.Bin_prot.Unsafe_common.sptr_ptr -><br> Core.Std.Bin_prot.Unsafe_common.eptr -> 'name) -><br> Core.Std.Bin_prot.Common.buf -><br> pos_ref:Core.Std.Bin_prot.Common.pos Pervasives.ref -><br> 'name <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a></code></pre> <pre><span id="VALbin_reader_t"><span class="keyword">val</span> bin_reader_t</span> : <code class="type">'a Core.Std.Bin_prot.Type_class.reader -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a><br> Core.Std.Bin_prot.Type_class.reader</code></pre> <pre><span id="VALbin_t"><span class="keyword">val</span> bin_t</span> : <code class="type">'a Core.Std.Bin_prot.Type_class.t -><br> 'a <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a> Core.Std.Bin_prot.Type_class.t</code></pre><br> This module describes the type of a given direction of message flow. For example it might describe the type of messages from the client to the server.<br> <br> <code class="code">lookup_marshal_fun v</code> This function takes a version <code class="code">v</code>, and returns a function that will downgrade (if necessary) the current version to <code class="code">v</code> and then write it to a bigsubstring. It is perfectly fine if one message becomes zero or more messages as a result of downgrading, this is why the marshal fun returns a list. The contents of these buffers will be copied immediatly, so it is safe to reuse the same bigstring for multiple marshals.<br> <br> <code class="code">lookup_unmarshal_fun v</code> This function takes a version <code class="code">v</code>, and returns a function that unmarshals a message and upgrades it, returning zero or more messages as a result of the upgrade. The bigsubstring is only guaranteed to contain valid data until the unmarshal function returns, after which it may be overwritten immediatly.<br> <br> This module may be used to implement modes for clients/servers. A common scheme is to have two modes, Test, and Production, and to want to maintain the invariant that clients in mode Test may not talk to servers in mode Production, and that clients in mode Production may not talk to servers in mode Test. Versioned connection will check that the mode of the client is the same as the mode of the server. <p> If you don't care about modes, just use Dont_care_about_mode.<br> <pre><span id="VAL__t_of_sexp__"><span class="keyword">val</span> __t_of_sexp__</span> : <code class="type">'name.<br> (Sexplib.Sexp.t -> 'name) -><br> Sexplib.Sexp.t -> 'name <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a></code></pre> <pre><span id="VALt_of_sexp"><span class="keyword">val</span> t_of_sexp</span> : <code class="type">'name.<br> (Sexplib.Sexp.t -> 'name) -><br> Sexplib.Sexp.t -> 'name <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a></code></pre> <pre><span id="VALsexp_of_t"><span class="keyword">val</span> sexp_of_t</span> : <code class="type">'name.<br> ('name -> Sexplib.Sexp.t) -><br> 'name <a href="Versioned_typed_tcp.Server_msg.Control.html#TYPEt">t</a> -> Sexplib.Sexp.t</code></pre></body></html>