diff options
| author | Mishio595 <[email protected]> | 2018-10-29 06:25:22 -0600 |
|---|---|---|
| committer | Mishio595 <[email protected]> | 2018-10-29 06:25:22 -0600 |
| commit | 5a1aae149fafa2848c2cd89a3c75992653380201 (patch) | |
| tree | d6c2567ab3854aa6fb51aa4a2d715cf42f76ff52 /lib/client/sharder/shardManager.ml | |
| parent | More random stuff with sharding (diff) | |
| download | disml-5a1aae149fafa2848c2cd89a3c75992653380201.tar.xz disml-5a1aae149fafa2848c2cd89a3c75992653380201.zip | |
Moving to LWT branch
Diffstat (limited to 'lib/client/sharder/shardManager.ml')
| -rw-r--r-- | lib/client/sharder/shardManager.ml | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/client/sharder/shardManager.ml b/lib/client/sharder/shardManager.ml new file mode 100644 index 0000000..c5919f3 --- /dev/null +++ b/lib/client/sharder/shardManager.ml @@ -0,0 +1,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
\ No newline at end of file |