aboutsummaryrefslogtreecommitdiffstats
path: root/src/web_server/bot_data.rs
diff options
context:
space:
mode:
authorJokler <jokler@protonmail.com>2020-10-15 13:11:54 +0000
committerGitHub <noreply@github.com>2020-10-15 13:11:54 +0000
commit43974717fee9a98701c6efa2e7221cdbfe7e537e (patch)
tree93fe1d75477ae3d1c8466611a2cedd7bed316aa2 /src/web_server/bot_data.rs
parent23671b51b4e207574a63bce820acbf43169e2b6c (diff)
parent4e1c2b9f04073294ecb8402486c20d9c01721598 (diff)
downloadpokebot-43974717fee9a98701c6efa2e7221cdbfe7e537e.tar.gz
pokebot-43974717fee9a98701c6efa2e7221cdbfe7e537e.zip
Merge pull request #70 from Mavulp/actor-bots
Replace channels&locks with actors & log with slog
Diffstat (limited to 'src/web_server/bot_data.rs')
-rw-r--r--src/web_server/bot_data.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/web_server/bot_data.rs b/src/web_server/bot_data.rs
new file mode 100644
index 0000000..af0c5e1
--- /dev/null
+++ b/src/web_server/bot_data.rs
@@ -0,0 +1,47 @@
+use async_trait::async_trait;
+
+use xtra::{Context, Handler, Message};
+
+use crate::bot::MasterBot;
+use crate::web_server::BotData;
+
+pub struct BotNameListRequest;
+
+impl Message for BotNameListRequest {
+ type Result = Vec<String>;
+}
+
+#[async_trait]
+impl Handler<BotNameListRequest> for MasterBot {
+ async fn handle(&mut self, _: BotNameListRequest, _: &mut Context<Self>) -> Vec<String> {
+ self.bot_names()
+ }
+}
+
+pub struct BotDataListRequest;
+
+impl Message for BotDataListRequest {
+ type Result = Vec<BotData>;
+}
+
+#[async_trait]
+impl Handler<BotDataListRequest> for MasterBot {
+ async fn handle(&mut self, _: BotDataListRequest, _: &mut Context<Self>) -> Vec<BotData> {
+ self.bot_datas().await
+ }
+}
+
+pub struct BotDataRequest(pub String);
+
+impl Message for BotDataRequest {
+ type Result = Option<BotData>;
+}
+
+#[async_trait]
+impl Handler<BotDataRequest> for MasterBot {
+ async fn handle(&mut self, r: BotDataRequest, _: &mut Context<Self>) -> Option<BotData> {
+ let name = r.0;
+
+ self.bot_data(name).await
+ }
+}