diff options
| author | Mishio595 <[email protected]> | 2018-11-30 17:18:43 -0700 |
|---|---|---|
| committer | Mishio595 <[email protected]> | 2018-11-30 17:18:43 -0700 |
| commit | d18108aeae576bfe3ef253faff5a6a16eb0f1040 (patch) | |
| tree | 79049516814ae7c2964846c5d90d6d3f1fc67540 | |
| parent | Merge branch 'master' of https://gitlab.com/Mishio595/disml into dev (diff) | |
| parent | Fix the multiple reconnect issue (diff) | |
| download | disml-d18108aeae576bfe3ef253faff5a6a16eb0f1040.tar.xz disml-d18108aeae576bfe3ef253faff5a6a16eb0f1040.zip | |
Merge branch 'dev' of https://gitlab.com/Mishio595/disml into dev
| -rw-r--r-- | lib/sharder.ml | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/sharder.ml b/lib/sharder.ml index 8e8c1f9..9b64bba 100644 --- a/lib/sharder.ml +++ b/lib/sharder.ml @@ -50,7 +50,7 @@ module Make(H: S.Http) = struct ] in let (_, write) = shard.pipe in - Pipe.write_if_open write @@ Frame.create ~content () + Pipe.write write @@ Frame.create ~content () >>| fun () -> shard @@ -118,13 +118,19 @@ module Make(H: S.Http) = struct match data with | Some data -> let hb_interval = J.(member "heartbeat_interval" data |> to_int) in - let finished = Ivar.create () in + let stop_hb = Ivar.create () in + let stopper i = + Ivar.read stop_hb + >>> fun () -> + Ivar.fill_if_empty i; + in + let stop = Deferred.create stopper in Clock.every' ~continue_on_error:true - ~finished + ~stop (Core.Time.Span.create ~ms:hb_interval ()) (fun () -> heartbeat shard >>= fun _ -> return ()); - finished + stop_hb | None -> raise Failure_to_Establish_Heartbeat end | Some s -> s @@ -263,12 +269,12 @@ module Make(H: S.Http) = struct (match Shard.parse frame with | Some f -> begin Shard.handle_frame ~f t.state - >>> fun shard -> - t.state <- shard; + >>| fun s -> (t.state <- s; t) end - | None -> Shard.recreate t.state >>> fun s -> t.state <- s; - ); - return t + | None -> begin + Shard.recreate t.state + >>| fun s -> (t.state <- s; t) + end) >>= fun t -> List.iter ~f:(fun f -> f t.state) t.binds; ev_loop t |