From b2b0e86ac923ca7c730e188fe28ce294cb241fd7 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 11 Mar 2016 14:34:50 +0100 Subject: [PATCH] Handle RoomListRequest. --- src/client.rs | 21 +++++++++++++++++++++ src/control/response.rs | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/client.rs b/src/client.rs index 6ecd3a9..202d879 100644 --- a/src/client.rs +++ b/src/client.rs @@ -92,14 +92,23 @@ impl Client { } } + /*==========================* + * CONTROL REQUEST HANDLING * + *==========================*/ + fn handle_control_request(&mut self, request: control::Request) { match request { control::Request::LoginStatusRequest => self.handle_login_status_request(), + control::Request::RoomListRequest => + self.handle_room_list_request(), + + /* _ =>{ error!("Unhandled control request: {:?}", request); }, + */ } } @@ -126,6 +135,18 @@ impl Client { self.control_tx.send(control::Response::LoginStatusResponse(response)); } + fn handle_room_list_request(&mut self) { + let mut response = control::RoomListResponse{ rooms: Vec::new() }; + for (room_name, room) in self.rooms.iter() { + response.rooms.push((room_name.clone(), room.clone())); + } + self.control_tx.send(control::Response::RoomListResponse(response)); + } + + /*==========================* + * SERVER RESPONSE HANDLING * + *==========================*/ + fn handle_server_response(&mut self, response: ServerResponse) { match response { ServerResponse::LoginResponse(response) => diff --git a/src/control/response.rs b/src/control/response.rs index 067f139..da2dae2 100644 --- a/src/control/response.rs +++ b/src/control/response.rs @@ -25,5 +25,5 @@ pub enum LoginStatusResponse { #[derive(Debug, RustcDecodable, RustcEncodable)] pub struct RoomListResponse { - rooms: Vec, + pub rooms: Vec<(String, room::Room)>, }