<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 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>Rpc</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">module</span> <span class="constructor">Implementation</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> <span class="keywordsign">'</span>connection_state t<br> <span class="keyword">module</span> <span class="constructor">Description</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t = { name : string; version : int; }<br> <span class="keyword">val</span> t_of_sexp : <span class="constructor">Sexplib</span>.<span class="constructor">Sexp</span>.t <span class="keywordsign">-></span> <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.<span class="constructor">Description</span>.t<br> <span class="keyword">val</span> sexp_of_t : <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.<span class="constructor">Description</span>.t <span class="keywordsign">-></span> <span class="constructor">Sexplib</span>.<span class="constructor">Sexp</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">val</span> description :<br> <span class="keywordsign">'</span>a <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t <span class="keywordsign">-></span> <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.<span class="constructor">Description</span>.t<br> <span class="keyword">val</span> lift :<br> <span class="keywordsign">'</span>a <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t <span class="keywordsign">-></span> f:(<span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Implementations</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> <span class="keywordsign">'</span>connection_state t<br> <span class="keyword">val</span> null : unit <span class="keywordsign">-></span> <span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementations</span>.t<br> <span class="keyword">val</span> create :<br> implementations:<span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t list <span class="keywordsign">-></span><br> on_unknown_rpc:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span> rpc_tag:string <span class="keywordsign">-></span> version:int <span class="keywordsign">-></span> unit<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Raise</span> ] <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementations</span>.t,<br> [ <span class="keywordsign">`</span><span class="constructor">Duplicate_implementations</span> <span class="keyword">of</span><br> <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.<span class="constructor">Description</span>.t list ])<br> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t<br> <span class="keyword">val</span> create_exn :<br> implementations:<span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t list <span class="keywordsign">-></span><br> on_unknown_rpc:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span> rpc_tag:string <span class="keywordsign">-></span> version:int <span class="keywordsign">-></span> unit<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Raise</span> ] <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementations</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">Connection</span> =<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t<br> <span class="keyword">val</span> create :<br> ?implementations:<span class="keywordsign">'</span>s <span class="constructor">Implementations</span>.t <span class="keywordsign">-></span><br> connection_state:<span class="keywordsign">'</span>s <span class="keywordsign">-></span><br> ?max_message_size:int <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t <span class="keywordsign">-></span><br> (t, <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t) <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> close : t <span class="keywordsign">-></span> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> close_finished : t <span class="keywordsign">-></span> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> is_closed : t <span class="keywordsign">-></span> bool<br> <span class="keyword">val</span> bytes_to_write : t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> with_close :<br> ?implementations:<span class="keywordsign">'</span>s <span class="constructor">Implementations</span>.t <span class="keywordsign">-></span><br> connection_state:<span class="keywordsign">'</span>s <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t <span class="keywordsign">-></span><br> dispatch_queries:(t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> on_handshake_error:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Raise</span> ] <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> server_with_close :<br> <span class="constructor">Import</span>.<span class="constructor">Reader</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Import</span>.<span class="constructor">Writer</span>.t <span class="keywordsign">-></span><br> implementations:<span class="keywordsign">'</span>s <span class="constructor">Implementations</span>.t <span class="keywordsign">-></span><br> connection_state:<span class="keywordsign">'</span>s <span class="keywordsign">-></span><br> on_handshake_error:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span><br> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t <span class="keywordsign">-></span> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Raise</span> ] <span class="keywordsign">-></span><br> unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> serve :<br> implementations:<span class="keywordsign">'</span>s <span class="constructor">Implementations</span>.t <span class="keywordsign">-></span><br> initial_connection_state:(([< <span class="constructor">Import</span>.<span class="constructor">Socket</span>.<span class="constructor">Address</span>.t ] <span class="keyword">as</span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> <span class="keywordsign">'</span>s) <span class="keywordsign">-></span><br> where_to_listen:(<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Where_to_listen</span>.t <span class="keywordsign">-></span><br> ?auth:(<span class="keywordsign">'</span>a <span class="keywordsign">-></span> bool) <span class="keywordsign">-></span><br> ?on_handshake_error:[ <span class="keywordsign">`</span><span class="constructor">Call</span> <span class="keyword">of</span> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t <span class="keywordsign">-></span> unit<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ignore</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Raise</span> ] <span class="keywordsign">-></span><br> unit <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>listening_on) <span class="constructor">Tcp</span>.<span class="constructor">Server</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">module</span> <span class="constructor">Client_implementations</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> <span class="keywordsign">'</span>s t = {<br> connection_state : <span class="keywordsign">'</span>s;<br> implementations : <span class="keywordsign">'</span>s <span class="constructor">Implementations</span>.t;<br> }<br> <span class="keyword">val</span> null : unit <span class="keywordsign">-></span> unit t<br> <span class="keyword">end</span><br> <span class="keyword">val</span> client :<br> host:string <span class="keywordsign">-></span><br> port:int <span class="keywordsign">-></span><br> ?implementations:<span class="keywordsign">'</span>a <span class="constructor">Client_implementations</span>.t <span class="keywordsign">-></span><br> unit <span class="keywordsign">-></span> (t, <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t) <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> with_client :<br> host:string <span class="keywordsign">-></span><br> port:int <span class="keywordsign">-></span><br> ?implementations:<span class="keywordsign">'</span>b <span class="constructor">Client_implementations</span>.t <span class="keywordsign">-></span><br> (t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Exn</span>.t) <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Connection</span> : <span class="constructor">Connection</span><br> <span class="keyword">module</span> <span class="constructor">Rpc</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response) t<br> <span class="keyword">val</span> create :<br> name:string <span class="keywordsign">-></span><br> version:int <span class="keywordsign">-></span><br> bin_query:<span class="keywordsign">'</span>query <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_response:<span class="keywordsign">'</span>response <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t<br> <span class="keyword">val</span> name : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> version : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> implement :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>connection_state <span class="keywordsign">-></span> <span class="keywordsign">'</span>query <span class="keywordsign">-></span> <span class="keywordsign">'</span>response <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t<br> <span class="keyword">val</span> dispatch :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span> <span class="keywordsign">'</span>response <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Or_error</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> dispatch_exn :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response) <span class="constructor">Rpc</span>.<span class="constructor">Rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>query <span class="keywordsign">-></span> <span class="keywordsign">'</span>response <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Pipe_rpc</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response, <span class="keywordsign">'</span>error) t<br> <span class="keyword">module</span> <span class="constructor">Id</span> : <span class="keyword">sig</span> <span class="keyword">type</span> t <span class="keyword">end</span><br> <span class="keyword">val</span> create :<br> name:string <span class="keywordsign">-></span><br> version:int <span class="keywordsign">-></span><br> bin_query:<span class="keywordsign">'</span>query <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_response:<span class="keywordsign">'</span>response <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_error:<span class="keywordsign">'</span>error <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t<br> <span class="keyword">val</span> implement :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>connection_state <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span><br> aborted:unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>response <span class="constructor">Import</span>.<span class="constructor">Pipe</span>.<span class="constructor">Reader</span>.t, <span class="keywordsign">'</span>error) <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t<br> <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t<br> <span class="keyword">val</span> dispatch :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>response <span class="constructor">Import</span>.<span class="constructor">Pipe</span>.<span class="constructor">Reader</span>.t * <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.<span class="constructor">Id</span>.t, <span class="keywordsign">'</span>error)<br> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Or_error</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> dispatch_exn :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>response, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>response <span class="constructor">Import</span>.<span class="constructor">Pipe</span>.<span class="constructor">Reader</span>.t * <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.<span class="constructor">Id</span>.t)<br> <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> abort :<br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span> <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.<span class="constructor">Id</span>.t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> name : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> version : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c) <span class="constructor">Rpc</span>.<span class="constructor">Pipe_rpc</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">State_rpc</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>state, <span class="keywordsign">'</span>update, <span class="keywordsign">'</span>error) t<br> <span class="keyword">module</span> <span class="constructor">Id</span> : <span class="keyword">sig</span> <span class="keyword">type</span> t <span class="keyword">end</span><br> <span class="keyword">val</span> create :<br> name:string <span class="keywordsign">-></span><br> version:int <span class="keywordsign">-></span><br> bin_query:<span class="keywordsign">'</span>query <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_state:<span class="keywordsign">'</span>state <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_update:<span class="keywordsign">'</span>update <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> bin_error:<span class="keywordsign">'</span>error <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Bin_prot</span>.<span class="constructor">Type_class</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>state, <span class="keywordsign">'</span>update, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t<br> <span class="keyword">val</span> implement :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>state, <span class="keywordsign">'</span>update, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>connection_state <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span><br> aborted:unit <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>state * <span class="keywordsign">'</span>update <span class="constructor">Import</span>.<span class="constructor">Pipe</span>.<span class="constructor">Reader</span>.t, <span class="keywordsign">'</span>error) <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t<br> <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>connection_state <span class="constructor">Rpc</span>.<span class="constructor">Implementation</span>.t<br> <span class="keyword">val</span> dispatch :<br> (<span class="keywordsign">'</span>query, <span class="keywordsign">'</span>state, <span class="keywordsign">'</span>update, <span class="keywordsign">'</span>error) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>query <span class="keywordsign">-></span><br> update:(<span class="keywordsign">'</span>state <span class="keywordsign">-></span> <span class="keywordsign">'</span>update <span class="keywordsign">-></span> <span class="keywordsign">'</span>state) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>state * (<span class="keywordsign">'</span>state * <span class="keywordsign">'</span>update) <span class="constructor">Import</span>.<span class="constructor">Pipe</span>.<span class="constructor">Reader</span>.t *<br> <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.<span class="constructor">Id</span>.t, <span class="keywordsign">'</span>error)<br> <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Result</span>.t <span class="constructor">Core</span>.<span class="constructor">Std</span>.<span class="constructor">Or_error</span>.t <span class="constructor">Import</span>.<span class="constructor">Deferred</span>.t<br> <span class="keyword">val</span> abort :<br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c, <span class="keywordsign">'</span>d) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t <span class="keywordsign">-></span><br> <span class="constructor">Rpc</span>.<span class="constructor">Connection</span>.t <span class="keywordsign">-></span> <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.<span class="constructor">Id</span>.t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> name : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c, <span class="keywordsign">'</span>d) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> version : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b, <span class="keywordsign">'</span>c, <span class="keywordsign">'</span>d) <span class="constructor">Rpc</span>.<span class="constructor">State_rpc</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>