Base: remove Lwt_utils.canceler
It has been replaced by `Lwt_canceler`
This commit is contained in:
parent
9060122b26
commit
a30f20c4e3
@ -53,8 +53,9 @@ let worker_loop () =
|
|||||||
let worker =
|
let worker =
|
||||||
lazy begin
|
lazy begin
|
||||||
Lwt.async begin fun () ->
|
Lwt.async begin fun () ->
|
||||||
let (_cancelation, cancel, _on_cancel) = Lwt_utils.canceler () in
|
Lwt_utils.worker "counter"
|
||||||
Lwt_utils.worker "counter" ~run:worker_loop ~cancel
|
~run:worker_loop
|
||||||
|
~cancel:(fun _ -> Lwt.return_unit)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -18,50 +18,6 @@ let may ~f = function
|
|||||||
|
|
||||||
let never_ending = fst (Lwt.wait ())
|
let never_ending = fst (Lwt.wait ())
|
||||||
|
|
||||||
(* A non exception-based cancelation mechanism. Builds a [cancelation]
|
|
||||||
thread to bind / pick on, awoken when a cancelation is requested by
|
|
||||||
[cancel ()]. [on_cancel cb] registers a callback to be called at
|
|
||||||
cancelation. [cancel ()] finishes when all calbacks have completed
|
|
||||||
(sequentially), instantly when called more than once. *)
|
|
||||||
let canceler ()
|
|
||||||
: (unit -> unit Lwt.t) *
|
|
||||||
(unit -> unit Lwt.t) *
|
|
||||||
((unit -> unit Lwt.t) -> unit) =
|
|
||||||
let cancelation = LC.create () in
|
|
||||||
let cancelation_complete = LC.create () in
|
|
||||||
let cancel_hook = ref (fun () -> Lwt.return ()) in
|
|
||||||
let canceling = ref false and canceled = ref false in
|
|
||||||
let cancel () =
|
|
||||||
if !canceled then
|
|
||||||
Lwt.return ()
|
|
||||||
else if !canceling then
|
|
||||||
LC.wait cancelation_complete
|
|
||||||
else begin
|
|
||||||
canceling := true ;
|
|
||||||
LC.broadcast cancelation () ;
|
|
||||||
Lwt.finalize
|
|
||||||
!cancel_hook
|
|
||||||
(fun () ->
|
|
||||||
canceled := true ;
|
|
||||||
LC.broadcast cancelation_complete () ;
|
|
||||||
Lwt.return ()) >>= fun () ->
|
|
||||||
Lwt.return_unit
|
|
||||||
end
|
|
||||||
in
|
|
||||||
let on_cancel cb =
|
|
||||||
let hook = !cancel_hook in
|
|
||||||
cancel_hook := (fun () -> hook () >>= cb) ;
|
|
||||||
in
|
|
||||||
let cancelation () =
|
|
||||||
if !canceling then Lwt.return ()
|
|
||||||
else LC.wait cancelation
|
|
||||||
in
|
|
||||||
cancelation, cancel, on_cancel
|
|
||||||
|
|
||||||
module Idle_waiter = struct
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
type trigger =
|
type trigger =
|
||||||
| Absent
|
| Absent
|
||||||
| Present
|
| Present
|
||||||
|
@ -11,11 +11,6 @@ val may: f:('a -> unit Lwt.t) -> 'a option -> unit Lwt.t
|
|||||||
|
|
||||||
val never_ending: 'a Lwt.t
|
val never_ending: 'a Lwt.t
|
||||||
|
|
||||||
val canceler: unit ->
|
|
||||||
(unit -> unit Lwt.t) *
|
|
||||||
(unit -> unit Lwt.t) *
|
|
||||||
((unit -> unit Lwt.t) -> unit)
|
|
||||||
|
|
||||||
val worker:
|
val worker:
|
||||||
string ->
|
string ->
|
||||||
run:(unit -> unit Lwt.t) ->
|
run:(unit -> unit Lwt.t) ->
|
||||||
|
Loading…
Reference in New Issue
Block a user