Shell: Introduce Lwt_utils.{read,write}_mbytes
This commit is contained in:
parent
ff1c08f876
commit
5e26e1b9df
@ -224,3 +224,36 @@ let stable_sort cmp l =
|
|||||||
if len < 2 then Lwt.return l else sort len l
|
if len < 2 then Lwt.return l else sort len l
|
||||||
|
|
||||||
let sort = stable_sort
|
let sort = stable_sort
|
||||||
|
|
||||||
|
let rec read_bytes ?(pos = 0) ?len fd buf =
|
||||||
|
let len = match len with None -> Bytes.length buf - pos | Some l -> l in
|
||||||
|
let rec inner pos len =
|
||||||
|
if len = 0 then
|
||||||
|
Lwt.return_unit
|
||||||
|
else
|
||||||
|
Lwt_unix.read fd buf pos len >>= fun nb_read ->
|
||||||
|
inner (pos + nb_read) (len - nb_read)
|
||||||
|
in
|
||||||
|
inner pos len
|
||||||
|
|
||||||
|
let read_mbytes ?(pos=0) ?len fd buf =
|
||||||
|
let len = match len with None -> MBytes.length buf - pos | Some l -> l in
|
||||||
|
let rec inner pos len =
|
||||||
|
if len = 0 then
|
||||||
|
Lwt.return_unit
|
||||||
|
else
|
||||||
|
Lwt_bytes.read fd buf pos len >>= fun nb_read ->
|
||||||
|
inner (pos + nb_read) (len - nb_read)
|
||||||
|
in
|
||||||
|
inner pos len
|
||||||
|
|
||||||
|
let write_mbytes ?(pos=0) ?len descr buf =
|
||||||
|
let len = match len with None -> MBytes.length buf - pos | Some l -> l in
|
||||||
|
let rec inner pos len =
|
||||||
|
if len = 0 then
|
||||||
|
Lwt.return_unit
|
||||||
|
else
|
||||||
|
Lwt_bytes.write descr buf pos len >>= fun nb_written ->
|
||||||
|
inner (pos + nb_written) (len - nb_written) in
|
||||||
|
inner pos len
|
||||||
|
|
||||||
|
@ -24,3 +24,12 @@ val worker:
|
|||||||
val trigger: unit -> (unit -> unit) * (unit -> unit Lwt.t)
|
val trigger: unit -> (unit -> unit) * (unit -> unit Lwt.t)
|
||||||
val queue: unit -> ('a -> unit) * (unit -> 'a list Lwt.t)
|
val queue: unit -> ('a -> unit) * (unit -> 'a list Lwt.t)
|
||||||
val sort: ('a -> 'a -> int Lwt.t) -> 'a list -> 'a list Lwt.t
|
val sort: ('a -> 'a -> int Lwt.t) -> 'a list -> 'a list Lwt.t
|
||||||
|
|
||||||
|
val read_bytes:
|
||||||
|
?pos:int -> ?len:int -> Lwt_unix.file_descr -> bytes -> unit Lwt.t
|
||||||
|
|
||||||
|
val read_mbytes:
|
||||||
|
?pos:int -> ?len:int -> Lwt_unix.file_descr -> MBytes.t -> unit Lwt.t
|
||||||
|
|
||||||
|
val write_mbytes:
|
||||||
|
?pos:int -> ?len:int -> Lwt_unix.file_descr -> MBytes.t -> unit Lwt.t
|
||||||
|
Loading…
Reference in New Issue
Block a user