diff options
| author | Adelyn Breedlove <[email protected]> | 2019-01-13 23:52:45 +0000 |
|---|---|---|
| committer | Adelyn Breedlove <[email protected]> | 2019-01-13 23:52:45 +0000 |
| commit | d95f0342f9cf2280b5d9794ab638c16a59c02a69 (patch) | |
| tree | 191164d198c07cf388d9aae8a54013e5613c272c /lib/sharder.ml | |
| parent | Merge branch 'dev' into 'master' (diff) | |
| parent | Add deriving sexp to models (diff) | |
| download | disml-d95f0342f9cf2280b5d9794ab638c16a59c02a69.tar.xz disml-d95f0342f9cf2280b5d9794ab638c16a59c02a69.zip | |
Merge branch 'switch-to-deriving_yojson' into 'master'
Switch to deriving yojson
See merge request Mishio595/disml!12
Diffstat (limited to 'lib/sharder.ml')
| -rw-r--r-- | lib/sharder.ml | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/lib/sharder.ml b/lib/sharder.ml index b1c84a6..f417f92 100644 --- a/lib/sharder.ml +++ b/lib/sharder.ml @@ -1,4 +1,4 @@ -module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct +module Make(H : S.Http)(D : S.Dispatch) = struct open Async open Core open Websocket_async @@ -21,14 +21,10 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct type 'a t = { mutable state: 'a; - mutable binds: ('a -> unit) list; } let identify_lock = Mutex.create () - let bind ~f t = - t.binds <- f :: t.binds - let parse (frame:[`Ok of Frame.t | `Eof]) = match frame with | `Ok s -> begin @@ -70,7 +66,7 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct Ivar.fill_if_empty shard.ready (); J.(member "session_id" data |> to_string_option) end else None in - D.dispatch ~ev:t (Yojson.Safe.to_string data); + D.dispatch ~ev:t data; return { shard with seq = seq; session = session; @@ -289,7 +285,7 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct let module J = Yojson.Safe.Util in H.get_gateway_bot () >>= fun data -> let data = match data with - | Ok d -> Yojson.Safe.from_string d + | Ok d -> d | Error e -> Error.raise e in let url = J.(member "url" data |> to_string) in @@ -312,7 +308,6 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct >>| fun s -> (t.state <- s; t) end) >>= fun t -> - List.iter ~f:(fun f -> f t.state) t.binds; ev_loop t in let rec gen_shards l a = @@ -321,7 +316,7 @@ module Make(H : S.Http)(D : S.Dispatch) : S.Sharder = struct | (id, total) -> Shard.create ~url ~shards:(id, total) () >>= fun shard -> - let t = Shard.{ state = shard; binds = []; } in + let t = Shard.{ state = shard; } in ev_loop t >>> ignore; gen_shards (id+1, total) (t :: a) in |