package async_unix

  1. Overview
  2. Docs
Monadic concurrency library

Install

Dune Dependency

Authors

Maintainers

Sources

v0.17.0.tar.gz
sha256=814d3a9997ec1316b8b2a601b24471740641647a25002761f7df7869c3ac9e33

doc/src/async_unix/reader.ml.html

Source file reader.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
open Core
open Import
include Reader0
module Writer = Writer0

let of_pipe info pipe_r =
  let%map `Reader reader_fd, `Writer writer_fd = Unix.pipe info in
  let reader = create reader_fd in
  let writer =
    Writer.create ~buffer_age_limit:`Unlimited ~raise_when_consumer_leaves:false writer_fd
  in
  if false
  then
    Debug.log
      "Reader.of_pipe"
      (pipe_r, reader, writer)
      [%sexp_of: string Pipe.Reader.t * t * Writer.t];
  don't_wait_for
    (let%bind () =
       Writer.transfer writer pipe_r ~stop:(close_finished reader) (fun s ->
         Writer.write writer s)
     in
     Writer.close writer);
  reader
;;

module For_testing = struct
  let of_string ?(info = Info.of_string "reader of string contents for tests") str =
    of_pipe info (Pipe.singleton str)
  ;;
end
OCaml

Innovation. Community. Security.