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
;;