sig
type socket
module Io :
sig
type socket = socket
type marker = Length of int | Split of string
type bigarray =
(char, Bigarray.int8_unsigned_elt, Bigarray.c_layout)
Bigarray.Array1.t
type failure =
Io_error
| Unix of Unix.error * string * string
| Unknown of exn
| Timeout
val read :
?recursive:bool ->
?init:string ->
?on_error:(string * failure -> unit) ->
?timeout:float ->
priority:'a ->
'a scheduler ->
socket -> marker -> (string * string option -> unit) -> unit
val write :
?exec:(unit -> unit) ->
?on_error:(failure -> unit) ->
?bigarray:bigarray ->
?string:Bytes.t ->
?timeout:float -> priority:'a -> 'a scheduler -> socket -> unit
end
type ('a, 'b) handler = {
scheduler : 'a Duppy.scheduler;
socket : Duppy.Monad.Monad_io_t.Io.socket;
mutable data : string;
on_error : Duppy.Monad.Monad_io_t.Io.failure -> 'b;
}
val exec :
?delay:float ->
priority:'a ->
('a, 'b) Duppy.Monad.Monad_io_t.handler ->
('c, 'b) Duppy.Monad.t -> ('c, 'b) Duppy.Monad.t
val delay :
priority:'a ->
('a, 'b) Duppy.Monad.Monad_io_t.handler ->
float -> (unit, 'b) Duppy.Monad.t
val read :
?timeout:float ->
priority:'a ->
marker:Duppy.Monad.Monad_io_t.Io.marker ->
('a, 'b) Duppy.Monad.Monad_io_t.handler -> (string, 'b) Duppy.Monad.t
val read_all :
?timeout:float ->
priority:'a ->
'a Duppy.scheduler ->
Duppy.Monad.Monad_io_t.Io.socket ->
(string, string * Duppy.Monad.Monad_io_t.Io.failure) Duppy.Monad.t
val write :
?timeout:float ->
priority:'a ->
('a, 'b) Duppy.Monad.Monad_io_t.handler ->
Stdlib.Bytes.t -> (unit, 'b) Duppy.Monad.t
val write_bigarray :
?timeout:float ->
priority:'a ->
('a, 'b) Duppy.Monad.Monad_io_t.handler ->
Duppy.Monad.Monad_io_t.Io.bigarray -> (unit, 'b) Duppy.Monad.t
end