mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-05-05 17:04:52 -04:00
8 lines
12 KiB
HTML
8 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fd (eio.Eio_unix.Fd)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../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">Index</a> » <a href="../../index.html">eio</a> » <a href="../index.html">Eio_unix</a> » Fd</nav><header class="odoc-preamble"><h1>Module <code><span>Eio_unix.Fd</span></code></h1><p>A safe wrapper for <a href="../../../ocaml/Unix/index.html#type-file_descr"><code>Unix.file_descr</code></a>.</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#creation">Creation</a></li><li><a href="#using-fds">Using FDs</a></li><li><a href="#closing">Closing</a></li><li><a href="#flags">Flags</a></li><li><a href="#standard-fds">Standard FDs</a></li><li><a href="#printing">Printing</a></li></ul></nav></div><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div><div class="spec-doc"><p>A wrapper around a <a href="../../../ocaml/Unix/index.html#type-file_descr"><code>Unix.file_descr</code></a>.</p></div></div><h3 id="creation"><a href="#creation" class="anchor"></a>Creation</h3><div class="odoc-spec"><div class="spec value anchored" id="val-of_unix"><a href="#val-of_unix" class="anchor"></a><code><span><span class="keyword">val</span> of_unix :
|
||
<span><span class="label">sw</span>:<a href="../../Eio/Switch/index.html#type-t">Eio.Std.Switch.t</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?blocking</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?seekable</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="label">close_unix</span>:bool <span class="arrow">-></span></span>
|
||
<span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> <span class="arrow">-></span></span>
|
||
<a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>of_unix ~sw ~close_unix fd</code> wraps <code>fd</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">sw</span> <p>Close <code>fd</code> automatically when <code>sw</code> is finished.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">blocking</span> <p>Indicates whether <code>fd</code> is in blocking mode. If not given, <code>fd</code> is probed for its blocking state if needed.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">seekable</span> <p>The value to be returned by <a href="#val-is_seekable"><code>is_seekable</code></a>. Defaults to probing if needed.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">close_unix</span> <p>Whether <a href="#val-close"><code>close</code></a> also closes <code>fd</code> (this should normally be <code>true</code>).</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_unix_list"><a href="#val-of_unix_list" class="anchor"></a><code><span><span class="keyword">val</span> of_unix_list : <span><span class="label">sw</span>:<a href="../../Eio/Switch/index.html#type-t">Eio.Std.Switch.t</a> <span class="arrow">-></span></span> <span><span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> list</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> list</span></span></code></div><div class="spec-doc"><p><code>of_unix_list ~sw fds</code> is like <code>List.map (of_unix ~sw ~close_unix:true) fds</code>, except that if <code>sw</code> is off then it closes all the FDs.</p></div></div><h3 id="using-fds"><a href="#using-fds" class="anchor"></a>Using FDs</h3><div class="odoc-spec"><div class="spec value anchored" id="val-use"><a href="#val-use" class="anchor"></a><code><span><span class="keyword">val</span> use : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span>(<span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="label">if_closed</span>:<span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>use t fn ~if_closed</code> calls <code>fn wrapped_fd</code>, ensuring that <code>wrapped_fd</code> will not be closed before <code>fn</code> returns.</p><p>If <code>t</code> is already closed, it returns <code>if_closed ()</code> instead.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-use_exn"><a href="#val-use_exn" class="anchor"></a><code><span><span class="keyword">val</span> use_exn : <span>string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span>(<span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>use_exn op t fn</code> calls <code>fn wrapped_fd</code>, ensuring that <code>wrapped_fd</code> will not be closed before <code>fn</code> returns.</p><p>If <code>t</code> is already closed, it raises an exception, using <code>op</code> as the name of the failing operation.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-use_exn_list"><a href="#val-use_exn_list" class="anchor"></a><code><span><span class="keyword">val</span> use_exn_list : <span>string <span class="arrow">-></span></span> <span><span><a href="#type-t">t</a> list</span> <span class="arrow">-></span></span> <span><span>(<span><span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> list</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>use_exn_list op fds fn</code> calls <a href="#val-use_exn"><code>use_exn</code></a> on each FD in <code>fds</code>, calling <code>fn wrapped_fds</code> on the results.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-use_exn_opt"><a href="#val-use_exn_opt" class="anchor"></a><code><span><span class="keyword">val</span> use_exn_opt : <span>string <span class="arrow">-></span></span> <span><span><a href="#type-t">t</a> option</span> <span class="arrow">-></span></span> <span><span>(<span><span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> option</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>use_exn_opt op fd fn</code> is like <a href="#val-use_exn"><code>use_exn</code></a>, but if <code>fd = None</code> then it just calls <code>fn None</code>.</p></div></div><h3 id="closing"><a href="#closing" class="anchor"></a>Closing</h3><div class="odoc-spec"><div class="spec value anchored" id="val-close"><a href="#val-close" class="anchor"></a><code><span><span class="keyword">val</span> close : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>close t</code> marks <code>t</code> as closed, so that <a href="#val-use"><code>use</code></a> can no longer be used to start new operations.</p><p>The wrapped FD will be closed once all current users of the FD have finished (unless <code>close_unix = false</code>).</p><p>Has no effect if <code>t</code> is already closed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-remove"><a href="#val-remove" class="anchor"></a><code><span><span class="keyword">val</span> remove : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> option</span></span></code></div><div class="spec-doc"><p><code>remove t</code> marks <code>t</code> as closed, so that <a href="#val-use"><code>use</code></a> can no longer be used to start new operations.</p><p>It then waits for all current users of the wrapped FD to finish using it, and then returns the FD.</p><p>This operation suspends the calling fiber and so must run from an Eio fiber. It does not allow itself to be cancelled, since it takes ownership of the FD and that would be leaked if it aborted.</p><p>Returns <code>None</code> if <code>t</code> is closed by another fiber first.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_open"><a href="#val-is_open" class="anchor"></a><code><span><span class="keyword">val</span> is_open : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_open t</code> returns <code>true</code> until <code>t</code> has been marked as closing, after which it returns <code>false</code>.</p><p>This is mostly useful inside the callback of <a href="#val-use"><code>use</code></a>, to test whether another fiber has started closing <code>t</code> (in which case you may decide to stop early).</p></div></div><h3 id="flags"><a href="#flags" class="anchor"></a>Flags</h3><div class="odoc-spec"><div class="spec value anchored" id="val-is_blocking"><a href="#val-is_blocking" class="anchor"></a><code><span><span class="keyword">val</span> is_blocking : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_blocking t</code> returns the value of <code>blocking</code> passed to <a href="#val-of_unix"><code>of_unix</code></a>.</p><p>If not known, it first probes for it (and if the FD is already closed, returns <code>false</code>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_seekable"><a href="#val-is_seekable" class="anchor"></a><code><span><span class="keyword">val</span> is_seekable : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_seekable t</code> returns the value of <code>seekable</code> passed to <a href="#val-of_unix"><code>of_unix</code></a>.</p><p>If not known, it first probes for it (and if the FD is already closed, returns <code>false</code>).</p></div></div><h3 id="standard-fds"><a href="#standard-fds" class="anchor"></a>Standard FDs</h3><div class="odoc-spec"><div class="spec value anchored" id="val-stdin"><a href="#val-stdin" class="anchor"></a><code><span><span class="keyword">val</span> stdin : <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stdout"><a href="#val-stdout" class="anchor"></a><code><span><span class="keyword">val</span> stdout : <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stderr"><a href="#val-stderr" class="anchor"></a><code><span><span class="keyword">val</span> stderr : <a href="#type-t">t</a></span></code></div></div><h3 id="printing"><a href="#printing" class="anchor"></a>Printing</h3><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="#type-t">t</a> <a href="../../../fmt/Fmt/index.html#type-t">Fmt.t</a></span></span></code></div><div class="spec-doc"><p>Displays the FD number.</p></div></div></div></body></html>
|