Sourceval create : ?buffer_size:int -> unit -> t Sourceval write_string : t -> ?off:int -> ?len:int -> string -> unit Sourceval on_wakeup : t -> (unit -> unit) -> unit Sourceval flush : t -> (unit -> unit) -> unit Sourceval close_and_drain : t -> unit Sourceval report_result : t -> [< `Closed | `Ok of int ] -> unit