Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
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)