diff options
Diffstat (limited to 'games/rstnode/rst-core/src/net/parser.rs')
-rw-r--r-- | games/rstnode/rst-core/src/net/parser.rs | 17 |
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(), + } +} |