aboutsummaryrefslogtreecommitdiff
path: root/lib/client.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/client.ml')
-rw-r--r--lib/client.ml35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/client.ml b/lib/client.ml
new file mode 100644
index 0000000..7c2d532
--- /dev/null
+++ b/lib/client.ml
@@ -0,0 +1,35 @@
+open Async
+
+type t = {
+ sharder: Sharder.t Ivar.t;
+ handler: (string * Model.t) Pipe.Writer.t;
+ token: string;
+}
+
+let make ~handler token =
+ {
+ sharder = Ivar.create ();
+ handler;
+ token;
+ }
+
+let start ?count client =
+ Sharder.start ?count ~handler:client.handler client.token
+ >>| fun sharder ->
+ Ivar.fill_if_empty client.sharder sharder;
+ client
+
+let set_status client status =
+ Ivar.read client.sharder
+ >>= fun sharder ->
+ Sharder.set_status sharder status
+
+let set_status_with client f =
+ Ivar.read client.sharder
+ >>= fun sharder ->
+ Sharder.set_status_with sharder f
+
+let request_guild_members ~guild ?query ?limit client =
+ Ivar.read client.sharder
+ >>= fun sharder ->
+ Sharder.request_guild_members ~guild ?query ?limit sharder