diff options
| author | Jokler <jokler@protonmail.com> | 2020-10-15 13:11:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-15 13:11:54 +0000 |
| commit | 43974717fee9a98701c6efa2e7221cdbfe7e537e (patch) | |
| tree | 93fe1d75477ae3d1c8466611a2cedd7bed316aa2 /src/web_server/bot_data.rs | |
| parent | 23671b51b4e207574a63bce820acbf43169e2b6c (diff) | |
| parent | 4e1c2b9f04073294ecb8402486c20d9c01721598 (diff) | |
| download | pokebot-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.rs | 47 |
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 + } +} |
