functor (Transport : Transport_t->
  sig
    type socket = Transport.t
    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 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 scheduler -> socket -> unit
  end