package tls-async

  1. Overview
  2. Docs

Source file session.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
open! Core
open! Async

module Fd = struct
  type t = Reader.t * Writer.t

  let read (reader, (_ : Writer.t)) buf =
    Deferred.Or_error.try_with (fun () -> Reader.read reader buf)
  ;;

  let write ((_ : Reader.t), writer) buf =
    Deferred.Or_error.try_with (fun () ->
      Writer.write writer buf;
      Writer.flushed writer)
  ;;

  let rec write_full fd buf =
    let open Deferred.Or_error.Let_syntax in
    match String.length buf with
    | 0 -> return ()
    | len ->
      let%bind () = write fd buf in
      write_full fd (String.sub buf ~pos:len ~len:(String.length buf - len))
  ;;
end

include Io.Make (Fd)
OCaml

Innovation. Community. Security.