Browse Source

Add UserListRequest and RoomLeaveResponse struct.

wip
Titouan Rigoudy 9 years ago
parent
commit
538578233f
4 changed files with 41 additions and 2 deletions
  1. +16
    -1
      src/client.rs
  2. +2
    -0
      src/control/request.rs
  3. +13
    -1
      src/control/response.rs
  4. +10
    -0
      src/user.rs

+ 16
- 1
src/client.rs View File

@ -225,6 +225,9 @@ impl Client {
control::Request::RoomMessageRequest(request) => control::Request::RoomMessageRequest(request) =>
self.handle_room_message_request(request), self.handle_room_message_request(request),
control::Request::UserListRequest =>
self.handle_user_list_request(),
/* /*
_ =>{ _ =>{
error!("Unhandled control request: {:?}", request); error!("Unhandled control request: {:?}", request);
@ -311,6 +314,16 @@ impl Client {
)); ));
} }
fn handle_user_list_request(&mut self) {
// Send the controller client what we have in memory.
let user_list = self.users.get_list();
self.send_to_controller(control::Response::UserListResponse(
control::UserListResponse {
user_list: user_list
}
));
}
/*=========================* /*=========================*
* PROTO RESPONSE HANDLING * * PROTO RESPONSE HANDLING *
*=========================*/ *=========================*/
@ -596,7 +609,9 @@ impl Client {
} }
self.send_to_controller(control::Response::RoomLeaveResponse( self.send_to_controller(control::Response::RoomLeaveResponse(
response.room_name
control::RoomLeaveResponse {
room_name: response.room_name
}
)); ));
} }


+ 2
- 0
src/control/request.rs View File

@ -12,6 +12,8 @@ pub enum Request {
RoomListRequest, RoomListRequest,
/// The controller wants to send a message to a chat room. /// The controller wants to send a message to a chat room.
RoomMessageRequest(RoomMessageRequest), RoomMessageRequest(RoomMessageRequest),
/// The controller wants to know the list of known users.
UserListRequest,
} }
/// This structure contains the chat room message request from the controller. /// This structure contains the chat room message request from the controller.


+ 13
- 1
src/control/response.rs View File

@ -7,12 +7,13 @@ use user;
pub enum Response { pub enum Response {
LoginStatusResponse(LoginStatusResponse), LoginStatusResponse(LoginStatusResponse),
RoomJoinResponse(RoomJoinResponse), RoomJoinResponse(RoomJoinResponse),
RoomLeaveResponse(String),
RoomLeaveResponse(RoomLeaveResponse),
RoomListResponse(RoomListResponse), RoomListResponse(RoomListResponse),
RoomMessageResponse(RoomMessageResponse), RoomMessageResponse(RoomMessageResponse),
RoomUserJoinedResponse(RoomUserJoinedResponse), RoomUserJoinedResponse(RoomUserJoinedResponse),
RoomUserLeftResponse(RoomUserLeftResponse), RoomUserLeftResponse(RoomUserLeftResponse),
UserInfoResponse(UserInfoResponse), UserInfoResponse(UserInfoResponse),
UserListResponse(UserListResponse),
} }
#[derive(Debug, RustcEncodable, RustcDecodable)] #[derive(Debug, RustcEncodable, RustcDecodable)]
@ -20,6 +21,11 @@ pub struct RoomJoinResponse {
pub room_name: String, pub room_name: String,
} }
#[derive(Debug, RustcEncodable, RustcDecodable)]
pub struct RoomLeaveResponse {
pub room_name: String,
}
/// This enumeration is the list of possible login states, and the associated /// This enumeration is the list of possible login states, and the associated
/// information. /// information.
#[derive(Debug, RustcDecodable, RustcEncodable)] #[derive(Debug, RustcDecodable, RustcEncodable)]
@ -88,3 +94,9 @@ pub struct UserInfoResponse {
pub user_name: String, pub user_name: String,
pub user_info: user::User, pub user_info: user::User,
} }
/// This stuct contains the last known information about every user.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct UserListResponse {
pub user_list: Vec<(String, user::User)>,
}

+ 10
- 0
src/user.rs View File

@ -148,6 +148,16 @@ impl UserMap {
} }
} }
/// Returns the list of (user name, user data) representing all known users.
pub fn get_list(&self) -> Vec<(String, User)>
{
let mut users = Vec::new();
for (user_name, user_data) in self.map.iter() {
users.push((user_name.clone(), user_data.clone()));
}
users
}
/// Sets the set of privileged users to the given list. /// Sets the set of privileged users to the given list.
pub fn set_all_privileged(&mut self, mut users: Vec<String>) pub fn set_all_privileged(&mut self, mut users: Vec<String>)
{ {


Loading…
Cancel
Save