Source file input_channel.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
open! Core
open! Async
include Input_channel0
module Output_channel = Output_channel0
let buffer_size t = Bytebuffer.capacity t.buf
let max_buffer_size t = Bytebuffer.max_buffer_size t.buf
let time_source t = t.time_source
let of_pipe ?max_buffer_size ?buf_len info reader =
Unix.pipe info
>>| fun (`Reader rd, `Writer wr) ->
let input_channel = create ?max_buffer_size ?buf_len rd in
let output_channel = Output_channel.create ?max_buffer_size ?buf_len wr in
don't_wait_for
(let%bind () = Output_channel.write_from_pipe output_channel reader in
Output_channel.close output_channel);
input_channel
;;