Browse Source

Handle SayRoomRequest and Response.

wip
Titouan Rigoudy 9 years ago
parent
commit
16b9936f1a
3 changed files with 58 additions and 8 deletions
  1. +34
    -8
      src/client.rs
  2. +11
    -0
      src/control/request.rs
  3. +13
    -0
      src/control/response.rs

+ 34
- 8
src/client.rs View File

@ -127,14 +127,17 @@ impl Client {
self.controller_connected = false;
},
control::Request::JoinRoomRequest(room_name) =>
self.handle_join_room_request(room_name),
control::Request::LoginStatusRequest =>
self.handle_login_status_request(),
control::Request::RoomListRequest =>
self.handle_room_list_request(),
control::Request::JoinRoomRequest(room_name) =>
self.handle_join_room_request(room_name),
control::Request::SayRoomRequest(request) =>
self.handle_say_room_request(request),
/*
_ =>{
@ -214,6 +217,15 @@ impl Client {
self.server_send(ServerRequest::RoomListRequest);
}
fn handle_say_room_request(
&mut self, request: control::SayRoomRequest)
{
self.server_send(ServerRequest::SayRoomRequest(SayRoomRequest {
room_name: request.room_name,
message: request.message,
}));
}
/*==========================*
* SERVER RESPONSE HANDLING *
*==========================*/
@ -232,6 +244,9 @@ impl Client {
ServerResponse::RoomListResponse(response) =>
self.handle_room_list_response(response),
ServerResponse::SayRoomResponse(response) =>
self.handle_say_room_response(response),
ServerResponse::UserJoinedRoomResponse(response) =>
self.handle_user_joined_room_response(response),
@ -314,18 +329,29 @@ impl Client {
}
}
fn handle_privileged_users_response(
&mut self, mut response: PrivilegedUsersResponse)
{
self.users.update_privileges(response);
}
fn handle_room_list_response(&mut self, response: RoomListResponse) {
// Update the room map in memory.
self.rooms.update(response);
// Send the updated version to the controller.
let response = self.rooms.get_room_list_response();
self.control_send(control::Response::RoomListResponse(response));
let control_response = self.rooms.get_room_list_response();
self.control_send(
control::Response::RoomListResponse(control_response));
}
fn handle_privileged_users_response(
&mut self, mut response: PrivilegedUsersResponse)
{
self.users.update_privileges(response);
fn handle_say_room_response(&mut self, response: SayRoomResponse) {
// TODO Save the message somewhere.
let control_response = control::SayRoomResponse {
room_name: response.room_name,
user_name: response.user_name,
message: response.message,
};
self.control_send(control::Response::SayRoomResponse(control_response));
}
fn handle_user_joined_room_response(


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

@ -15,4 +15,15 @@ pub enum Request {
LoginStatusRequest,
/// The controller wants to know the list of visible chat rooms.
RoomListRequest,
/// The controller wants to send a message to a chat room.
SayRoomRequest(SayRoomRequest),
}
/// This structure contains the chat room message request from the controller.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct SayRoomRequest {
/// The name of the chat room in which to say the message.
pub room_name: String,
/// The message to be said.
pub message: String,
}

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

@ -6,6 +6,7 @@ use room;
pub enum Response {
LoginStatusResponse(LoginStatusResponse),
RoomListResponse(RoomListResponse),
SayRoomResponse(SayRoomResponse),
}
/// This enumeration is the list of possible login states, and the associated
@ -43,3 +44,15 @@ pub struct RoomListResponse {
/// The list of (room name, room data) pairs.
pub rooms: Vec<(String, room::Room)>,
}
/// This structure contains a message said in a chat room the user is a member
/// of.
#[derive(Debug, RustcDecodable, RustcEncodable)]
pub struct SayRoomResponse {
/// The name of the room in which the message was said.
pub room_name: String,
/// The name of the user who said the message.
pub user_name: String,
/// The message itself.
pub message: String,
}

Loading…
Cancel
Save