diff options
Diffstat (limited to 'lib/client.ml')
| -rw-r--r-- | lib/client.ml | 35 |
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 |