Browse Source

Basic handler for control RoomListRequest.

wip
Titouan Rigoudy 4 years ago
parent
commit
2d5b2b2adb
3 changed files with 63 additions and 1 deletions
  1. +15
    -1
      client/src/dispatcher.rs
  2. +2
    -0
      client/src/handlers/mod.rs
  3. +46
    -0
      client/src/handlers/room_list_request_handler.rs

+ 15
- 1
client/src/dispatcher.rs View File

@ -6,13 +6,17 @@ use log::warn;
use solstice_proto::server::ServerResponse;
use crate::context::Context;
use crate::control::Request as ControlRequest;
use crate::executor::Job;
use crate::handlers::{SetPrivilegedUsersHandler, SetRoomListHandler};
use crate::handlers::{
RoomListRequestHandler, SetPrivilegedUsersHandler, SetRoomListHandler,
};
use crate::message_handler::MessageHandler;
/// The type of messages dispatched by a dispatcher.
#[derive(Debug)]
pub enum Message {
ControlRequest(ControlRequest),
ServerResponse(ServerResponse),
}
@ -74,6 +78,16 @@ impl Dispatcher {
warn!("Unhandled server response: {:?}", response);
None
}
Message::ControlRequest(ControlRequest::RoomListRequest) => {
Some(Box::new(DispatchedMessage {
message: (),
handler: RoomListRequestHandler::default(),
}))
}
Message::ControlRequest(request) => {
warn!("Unhandled control request: {:?}", request);
None
}
}
}
}


+ 2
- 0
client/src/handlers/mod.rs View File

@ -1,5 +1,7 @@
mod room_list_request_handler;
mod set_privileged_users_handler;
mod set_room_list_handler;
pub use room_list_request_handler::RoomListRequestHandler;
pub use set_privileged_users_handler::SetPrivilegedUsersHandler;
pub use set_room_list_handler::SetRoomListHandler;

+ 46
- 0
client/src/handlers/room_list_request_handler.rs View File

@ -0,0 +1,46 @@
use std::io;
use solstice_proto::ServerRequest;
use crate::context::Context;
use crate::message_handler::MessageHandler;
#[derive(Debug, Default)]
pub struct RoomListRequestHandler;
impl MessageHandler<()> for RoomListRequestHandler {
fn run(self, context: &Context, message: &()) -> io::Result<()> {
// TODO: Send `RoomListResponse` back over socket.
context
.server_request_tx
.blocking_send(ServerRequest::RoomListRequest);
Ok(())
}
fn name() -> String {
"RoomListRequestHandler".to_string()
}
}
#[cfg(test)]
mod tests {
use solstice_proto::ServerRequest;
use crate::context::ContextBundle;
use crate::message_handler::MessageHandler;
use super::RoomListRequestHandler;
#[test]
fn run_forwards_request() {
let mut bundle = ContextBundle::default();
RoomListRequestHandler::default()
.run(&bundle.context, &())
.unwrap();
let request = bundle.server_request_rx.blocking_recv().unwrap();
assert_eq!(request, ServerRequest::RoomListRequest);
}
}

Loading…
Cancel
Save