Browse Source

Notify controller when users join/leave rooms.

wip
Titouan Rigoudy 9 years ago
parent
commit
c65910a221
2 changed files with 34 additions and 11 deletions
  1. +18
    -11
      src/client.rs
  2. +16
    -0
      src/control/response.rs

+ 18
- 11
src/client.rs View File

@ -416,13 +416,16 @@ impl Client {
let result = self.rooms.insert_member(
&response.room_name, response.user_name.clone()
);
match result {
Ok(()) => {
self.users.insert(response.user_name, response.user);
// TODO send control response
},
Err(err) => error!("RoomUserJoinedResponse: {}", err)
if let Err(err) = result {
error!("RoomUserJoinedResponse: {}", err);
return
}
self.send_to_controller(control::Response::RoomUserJoinedResponse(
control::RoomUserJoinedResponse {
room_name: response.room_name,
user_name: response.user_name,
}
));
}
fn handle_room_user_left_response(
@ -431,12 +434,16 @@ impl Client {
let result = self.rooms.remove_member(
&response.room_name, &response.user_name
);
match result {
Ok(()) => {
// TODO send control response
},
Err(err) => error!("RoomUserLeftResponse: {}", err)
if let Err(err) = result {
error!("RoomUserLeftResponse: {}", err);
return
}
self.send_to_controller(control::Response::RoomUserLeftResponse(
control::RoomUserLeftResponse {
room_name: response.room_name,
user_name: response.user_name,
}
));
}
fn handle_user_info_response(&mut self, response: UserInfoResponse) {


+ 16
- 0
src/control/response.rs View File

@ -10,6 +10,8 @@ pub enum Response {
RoomLeaveResponse(String),
RoomListResponse(RoomListResponse),
RoomMessageResponse(RoomMessageResponse),
RoomUserJoinedResponse(RoomUserJoinedResponse),
RoomUserLeftResponse(RoomUserLeftResponse),
UserInfoResponse(UserInfoResponse),
}
@ -66,6 +68,20 @@ pub struct RoomMessageResponse {
pub message: String,
}
/// This struct describes the fact that the given user joined the given room.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct RoomUserJoinedResponse {
pub room_name: String,
pub user_name: String,
}
/// This struct describes the fact that the given user left the given room.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct RoomUserLeftResponse {
pub room_name: String,
pub user_name: String,
}
/// This struct contains the last known information about a given user.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct UserInfoResponse {


Loading…
Cancel
Save