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)>, }