mirror of
https://github.com/ocaml-multicore/eio.git
synced 2025-12-05 00:02:58 -05:00
Merge pull request #242 from talex5/buf_write_switch
Buf_write.of_buffer needs a switch too
This commit is contained in:
commit
a418022ab2
@ -167,19 +167,6 @@ type t =
|
|||||||
}
|
}
|
||||||
(* Invariant: [write_pos >= scheduled_pos] *)
|
(* Invariant: [write_pos >= scheduled_pos] *)
|
||||||
|
|
||||||
let of_buffer buffer =
|
|
||||||
{ buffer
|
|
||||||
; write_pos = 0
|
|
||||||
; scheduled_pos = 0
|
|
||||||
; scheduled = Buffers.create 4
|
|
||||||
; flushed = Flushes.create 1
|
|
||||||
; bytes_received = 0
|
|
||||||
; bytes_written = 0
|
|
||||||
; state = Active
|
|
||||||
; wake_writer = ignore
|
|
||||||
; id = Ctf.mint_id ()
|
|
||||||
}
|
|
||||||
|
|
||||||
exception Released
|
exception Released
|
||||||
|
|
||||||
let writable_exn t =
|
let writable_exn t =
|
||||||
@ -381,11 +368,25 @@ let abort t =
|
|||||||
in
|
in
|
||||||
aux ()
|
aux ()
|
||||||
|
|
||||||
let create ~sw size =
|
let of_buffer ~sw buffer =
|
||||||
let t = of_buffer (Bigstringaf.create size) in
|
let t = { buffer
|
||||||
|
; write_pos = 0
|
||||||
|
; scheduled_pos = 0
|
||||||
|
; scheduled = Buffers.create 4
|
||||||
|
; flushed = Flushes.create 1
|
||||||
|
; bytes_received = 0
|
||||||
|
; bytes_written = 0
|
||||||
|
; state = Active
|
||||||
|
; wake_writer = ignore
|
||||||
|
; id = Ctf.mint_id ()
|
||||||
|
}
|
||||||
|
in
|
||||||
Switch.on_release sw (fun () -> abort t);
|
Switch.on_release sw (fun () -> abort t);
|
||||||
t
|
t
|
||||||
|
|
||||||
|
let create ~sw size =
|
||||||
|
of_buffer ~sw (Bigstringaf.create size)
|
||||||
|
|
||||||
let pending_bytes t =
|
let pending_bytes t =
|
||||||
(t.write_pos - t.scheduled_pos) + (t.bytes_received - t.bytes_written)
|
(t.write_pos - t.scheduled_pos) + (t.bytes_received - t.bytes_written)
|
||||||
|
|
||||||
|
|||||||
@ -268,8 +268,8 @@ val create : sw:Switch.t -> int -> t
|
|||||||
when [len] is not large enough to support a write.
|
when [len] is not large enough to support a write.
|
||||||
When [sw] is finished, any pending flush operations immediately fail. *)
|
When [sw] is finished, any pending flush operations immediately fail. *)
|
||||||
|
|
||||||
val of_buffer : Cstruct.buffer -> t
|
val of_buffer : sw:Switch.t -> Cstruct.buffer -> t
|
||||||
(** [of_buffer buf] creates a serializer, using [buf] as its internal
|
(** [of_buffer ~sw buf] creates a serializer, using [buf] as its internal
|
||||||
buffer. The serializer takes ownership of [buf] until the serializer has
|
buffer. The serializer takes ownership of [buf] until the serializer has
|
||||||
been closed and flushed of all output. *)
|
been closed and flushed of all output. *)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user