mirror of
https://github.com/zap-proto/ocaml-rpc.git
synced 2026-11-03 13:11:00 +00:00
14 lines
14 KiB
HTML
14 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>C (capnp-rpc.Capnp_rpc_proto.Cap_proxy.Make.C)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.4"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../../index.html">capnp-rpc</a> » <a href="../../../index.html">Capnp_rpc_proto</a> » <a href="../../index.html">Cap_proxy</a> » <a href="../index.html">Make</a> » C</nav><header class="odoc-preamble"><h1>Parameter <code><span>Make.C</span></code></h1><p>This module defines a calling convention for invoking methods on objects. The objects could be remote, but this module doesn't define anything related to networks. These types are generated automatically from <code>WIRE</code> by <code>Core_types</code>.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Wire"><a href="#module-Wire" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Wire/index.html">Wire</a></span><span> : <a href="../../../S/module-type-WIRE/index.html">S.WIRE</a></span></code></div><div class="spec-doc"><p>The core RPC logic can be used with different serialisation systems. The appropriate types should be provided here.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-or_error"><a href="#type-or_error" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a or_error</span></span><span> = <span><span>(<span class="type-var">'a</span>, <a href="../../../Error/index.html#type-t">Error.t</a>)</span> <span class="xref-unresolved">Stdlib</span>.result</span></span></code></div></div><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-base_ref"><a href="#class-type-base_ref" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-base_ref/index.html">base_ref</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Common methods for <code>struct_ref</code> and <code>cap</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><a href="class-type-base_ref/index.html">base_ref</a> <span class="xref-unresolved">Fmt</span>.t</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-inc_ref"><a href="#val-inc_ref" class="anchor"></a><code><span><span class="keyword">val</span> inc_ref : <span><a href="class-type-base_ref/index.html">base_ref</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>inc_ref x</code> increases <code>x</code>'s ref-count by one.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dec_ref"><a href="#val-dec_ref" class="anchor"></a><code><span><span class="keyword">val</span> dec_ref : <span><a href="class-type-base_ref/index.html">base_ref</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>dec_ref x</code> decreases <code>x</code>'s ref-count by one.</p></div></div><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-struct_ref"><a href="#class-type-struct_ref" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-struct_ref/index.html">struct_ref</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The result of a call, which may not have arrived yet. It can be used to pipeline calls to capabilities that we hope will be returned in the results.</p></div></div><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-cap"><a href="#class-type-cap" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-cap/index.html">cap</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A capability reference to an object that can handle calls. We might not yet know its final location, but we may be able to pipeline messages to it anyway.</p></div></div><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-struct_resolver"><a href="#class-type-struct_resolver" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-struct_resolver/index.html">struct_resolver</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A <code>struct_resolver</code> can be used to resolve some promise.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Attachments"><a href="#module-Attachments" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Attachments/index.html">Attachments</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Request_payload"><a href="#module-Request_payload" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Request_payload/index.html">Request_payload</a></span><span> :
|
||
<a href="../../../S/module-type-PAYLOAD/index.html">S.PAYLOAD</a>
|
||
<span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-t">t</a> = <a href="Wire/Request/index.html#type-t">Wire.Request.t</a></span>
|
||
<span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-cap">cap</a> := <a href="class-type-cap/index.html">cap</a></span>
|
||
<span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-path">path</a> := <a href="Wire/Path/index.html#type-t">Wire.Path.t</a></span></span></code></div><div class="spec-doc"><p>The payload of a request message.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Response_payload"><a href="#module-Response_payload" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Response_payload/index.html">Response_payload</a></span><span> :
|
||
<a href="../../../S/module-type-PAYLOAD/index.html">S.PAYLOAD</a>
|
||
<span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-t">t</a> = <a href="Wire/Response/index.html#type-t">Wire.Response.t</a></span>
|
||
<span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-cap">cap</a> := <a href="class-type-cap/index.html">cap</a></span>
|
||
<span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../S/module-type-PAYLOAD/index.html#type-path">path</a> := <a href="Wire/Path/index.html#type-t">Wire.Path.t</a></span></span></code></div><div class="spec-doc"><p>The payload of a response message.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-ref_counted"><a href="#class-ref_counted" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> </span><span><a href="class-ref_counted/index.html">ref_counted</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A mix-in to help with writing reference-counted objects. It will call <code>self#release</code> when the ref-count reaches zero.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-service"><a href="#class-service" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> </span><span><a href="class-service/index.html">service</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A convenience base class for creating local services. The capability is always resolved, and the default <code>release</code> method does nothing.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-null"><a href="#val-null" class="anchor"></a><code><span><span class="keyword">val</span> null : <a href="class-type-cap/index.html">cap</a></span></code></div><div class="spec-doc"><p>A (broken) capability representing a missing pointer. Any attempt to call it will return an error.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-return"><a href="#val-return" class="anchor"></a><code><span><span class="keyword">val</span> return : <span><a href="Response_payload/index.html#type-t">Response_payload.t</a> <span class="arrow">-></span></span> <a href="class-type-struct_ref/index.html">struct_ref</a></span></code></div><div class="spec-doc"><p><code>return x</code> is a resolved <code>struct_ref</code> with successful resolution <code>x</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fail"><a href="#val-fail" class="anchor"></a><code><span><span class="keyword">val</span> fail :
|
||
<span><span class="optlabel">?ty</span>:<a href="../../../Exception/index.html#type-ty">Exception.ty</a> <span class="arrow">-></span></span>
|
||
<span><span><span>(<span class="type-var">'a</span>, <span class="xref-unresolved">Stdlib</span>.Format.formatter, unit, <a href="class-type-struct_ref/index.html">struct_ref</a>)</span> <span class="xref-unresolved">Stdlib</span>.format4</span> <span class="arrow">-></span></span>
|
||
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fail fmt</code> is a <code>struct_ref</code> that is broken with the given capnp exception message.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-broken_cap"><a href="#val-broken_cap" class="anchor"></a><code><span><span class="keyword">val</span> broken_cap : <span><a href="../../../Exception/index.html#type-t">Exception.t</a> <span class="arrow">-></span></span> <a href="class-type-cap/index.html">cap</a></span></code></div><div class="spec-doc"><p><code>broken_cap ex</code> is a <code>cap</code> that is broken with the given exception.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-broken_struct"><a href="#val-broken_struct" class="anchor"></a><code><span><span class="keyword">val</span> broken_struct : <span><a href="../../../Error/index.html#type-t">Error.t</a> <span class="arrow">-></span></span> <a href="class-type-struct_ref/index.html">struct_ref</a></span></code></div><div class="spec-doc"><p><code>broken_struct err</code> is a <code>struct_ref</code> that is broken with the given error.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-resolved"><a href="#val-resolved" class="anchor"></a><code><span><span class="keyword">val</span> resolved : <span><span><a href="Response_payload/index.html#type-t">Response_payload.t</a> <a href="#type-or_error">or_error</a></span> <span class="arrow">-></span></span> <a href="class-type-struct_ref/index.html">struct_ref</a></span></code></div><div class="spec-doc"><p><code>resolved x</code> is a resolved <code>struct_ref</code> with resolution <code>x</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-resolve_payload"><a href="#val-resolve_payload" class="anchor"></a><code><span><span class="keyword">val</span> resolve_payload : <span><a href="class-type-struct_resolver/index.html">struct_resolver</a> <span class="arrow">-></span></span> <span><span><a href="Response_payload/index.html#type-t">Response_payload.t</a> <a href="#type-or_error">or_error</a></span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>resolve_payload r x</code> is <code>r#resolve (resolved x)</code>. <code>r</code> takes ownership of <code>x</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-resolve_ok"><a href="#val-resolve_ok" class="anchor"></a><code><span><span class="keyword">val</span> resolve_ok : <span><a href="class-type-struct_resolver/index.html">struct_resolver</a> <span class="arrow">-></span></span> <span><a href="Wire/Response/index.html#type-t">Wire.Response.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>resolve_ok r msg</code> is <code>resolve_payload r (Ok msg)</code>. <code>r</code> takes ownership of <code>msg</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-resolve_exn"><a href="#val-resolve_exn" class="anchor"></a><code><span><span class="keyword">val</span> resolve_exn : <span><a href="class-type-struct_resolver/index.html">struct_resolver</a> <span class="arrow">-></span></span> <span><a href="../../../Exception/index.html#type-t">Exception.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>resolve_exn r exn</code> is <code>resolve_payload r (Error (`Exception exn))</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-when_broken"><a href="#val-when_broken" class="anchor"></a><code><span><span class="keyword">val</span> when_broken : <span><span>(<span><a href="../../../Exception/index.html#type-t">Exception.t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="class-type-cap/index.html">cap</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>when_broken fn x</code> calls <code>fn problem</code> when <code>x</code> becomes broken. If <code>x</code> is already broken, <code>fn</code> is called immediately. If <code>x</code> can never become broken (e.g. it is a near ref), this does nothing.</p></div></div></div></body></html>
|