blob: c5919f3bc32633aeaa425d31d2c363ed10f39347 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
open Lwt.Infix
module ShardSet = Set.Make(struct
type t = Shard.t
let compare (s1:t) (s2:t) = Pervasives.compare s1.id s2.id
end)
type t = {
shards: ShardSet.t;
gateway_url: Uri.t;
token: string;
}
let create_shard ?(options=[]) manager =
let id = (ShardSet.cardinal manager.shards) + 1 in
Shard.connect ~_options:options ~uri:manager.gateway_url ~id ~total:(ShardSet.cardinal manager.shards) ~token:manager.token ()
>|= fun shard ->
ShardSet.add shard manager.shards
let update_shard manager shard =
match ShardSet.mem shard manager.shards with
| true -> ShardSet.add shard manager.shards
| false -> manager.shards
let heartbeat _manager shard =
Shard.heartbeat shard
let identify _manager shard =
Shard.identify shard
let resume _manager shard =
Shard.resume shard
|