aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/rst-core/src/net/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'games/rstnode/rst-core/src/net/parser.rs')
-rw-r--r--games/rstnode/rst-core/src/net/parser.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/games/rstnode/rst-core/src/net/parser.rs b/games/rstnode/rst-core/src/net/parser.rs
new file mode 100644
index 000000000000..d7fdf3de964a
--- /dev/null
+++ b/games/rstnode/rst-core/src/net/parser.rs
@@ -0,0 +1,17 @@
+use crate::{
+ error::Error,
+ wire::{Request, Response},
+ GameIf,
+};
+use std::sync::Arc;
+
+/// Parse a request and call a game interface function for it
+pub async fn request(req: Request, game: Arc<impl GameIf>) -> Response {
+ use Request::*;
+ match req {
+ Register(name, pw) => super::register(game.register(name, pw).await),
+ Login(name, pw_hash) => super::login(game.login(name, pw_hash).await),
+ Logout(user) => super::logout(game.logout(user).await),
+ _ => super::invalid(),
+ }
+}