Browse Source

Migrate RoomMessageRequestHandler.

main
Titouan Rigoudy 2 years ago
parent
commit
00c6f1758e
3 changed files with 46 additions and 78 deletions
  1. +0
    -2
      client/src/handlers/mod.rs
  2. +0
    -74
      client/src/handlers/room_message_request_handler.rs
  3. +46
    -2
      client/src/room/event.rs

+ 0
- 2
client/src/handlers/mod.rs View File

@ -2,7 +2,6 @@ mod login_status_request_handler;
mod peer_address_response_handler; mod peer_address_response_handler;
mod peer_connect_request_handler; mod peer_connect_request_handler;
mod privileged_users_response_handler; mod privileged_users_response_handler;
mod room_message_request_handler;
mod room_message_response_handler; mod room_message_response_handler;
mod user_list_request_handler; mod user_list_request_handler;
@ -10,6 +9,5 @@ pub use login_status_request_handler::LoginStatusRequestHandler;
pub use peer_address_response_handler::PeerAddressResponseHandler; pub use peer_address_response_handler::PeerAddressResponseHandler;
pub use peer_connect_request_handler::PeerConnectRequestHandler; pub use peer_connect_request_handler::PeerConnectRequestHandler;
pub use privileged_users_response_handler::PrivilegedUsersResponseHandler; pub use privileged_users_response_handler::PrivilegedUsersResponseHandler;
pub use room_message_request_handler::RoomMessageRequestHandler;
pub use room_message_response_handler::RoomMessageResponseHandler; pub use room_message_response_handler::RoomMessageResponseHandler;
pub use user_list_request_handler::UserListRequestHandler; pub use user_list_request_handler::UserListRequestHandler;

+ 0
- 74
client/src/handlers/room_message_request_handler.rs View File

@ -1,74 +0,0 @@
use anyhow::Context as AnyhowContext;
use solstice_proto::server;
use solstice_proto::ServerRequest;
use crate::context::Context;
use crate::control;
use crate::message_handler::MessageHandler;
#[derive(Debug, Default)]
pub struct RoomMessageRequestHandler;
impl MessageHandler for RoomMessageRequestHandler {
type Message = control::RoomMessageRequest;
fn run(
self,
context: &mut Context,
message: &control::RoomMessageRequest,
) -> anyhow::Result<()> {
// TODO: Add message to room.
context
.server_request_tx
.blocking_send(ServerRequest::RoomMessageRequest(
server::RoomMessageRequest {
room_name: message.room_name.clone(),
message: message.message.clone(),
},
))
.context("sending server request")?;
Ok(())
}
fn name() -> String {
"RoomMessageRequestHandler".to_string()
}
}
#[cfg(test)]
mod tests {
use solstice_proto::server;
use solstice_proto::ServerRequest;
use crate::context::ContextBundle;
use crate::control;
use crate::message_handler::MessageHandler;
use super::RoomMessageRequestHandler;
#[test]
fn run_forwards_request() {
let mut bundle = ContextBundle::default();
RoomMessageRequestHandler::default()
.run(
&mut bundle.context,
&control::RoomMessageRequest {
room_name: "bleep".to_string(),
message: "yo!".to_string(),
}
.into(),
)
.unwrap();
let request = bundle.server_request_rx.blocking_recv().unwrap();
assert_eq!(
request,
ServerRequest::RoomMessageRequest(server::RoomMessageRequest {
room_name: "bleep".to_string(),
message: "yo!".to_string(),
})
);
}
}

+ 46
- 2
client/src/room/event.rs View File

@ -7,7 +7,7 @@ use solstice_proto::ServerRequest;
use crate::context::Context; use crate::context::Context;
use crate::control; use crate::control;
use crate::handlers::{RoomMessageRequestHandler, RoomMessageResponseHandler};
use crate::handlers::RoomMessageResponseHandler;
use crate::message_handler::MessageHandler; use crate::message_handler::MessageHandler;
/// An event affecting the chat room module. /// An event affecting the chat room module.
@ -124,6 +124,22 @@ fn handle_list_response(
.context("sending control response") .context("sending control response")
} }
fn handle_message_request(
context: &mut Context,
message: control::RoomMessageRequest,
) -> anyhow::Result<()> {
// TODO: Add message to room.
context
.server_request_tx
.blocking_send(ServerRequest::RoomMessageRequest(
server::RoomMessageRequest {
room_name: message.room_name,
message: message.message,
},
))
.context("sending server request")
}
impl HandleRoomEvent for RoomEventHandler { impl HandleRoomEvent for RoomEventHandler {
fn handle( fn handle(
&mut self, &mut self,
@ -143,7 +159,7 @@ impl HandleRoomEvent for RoomEventHandler {
handle_list_response(context, response) handle_list_response(context, response)
} }
RoomEvent::MessageRequest(request) => { RoomEvent::MessageRequest(request) => {
RoomMessageRequestHandler::default().run(context, &request)
handle_message_request(context, request)
} }
RoomEvent::MessageResponse(response) => { RoomEvent::MessageResponse(response) => {
RoomMessageResponseHandler::default().run(context, &response) RoomMessageResponseHandler::default().run(context, &response)
@ -425,4 +441,32 @@ mod tests {
] ]
); );
} }
#[test]
fn handle_message_request_forwards_request() {
let mut bundle = ContextBundle::default();
RoomEventHandler
.handle(
&mut bundle.context,
RoomEvent::MessageRequest(control::RoomMessageRequest {
room_name: "bleep".to_string(),
message: "yo!".to_string(),
}),
)
.expect("handling request");
let request = bundle
.server_request_rx
.blocking_recv()
.expect("receiving request");
assert_eq!(
request,
ServerRequest::RoomMessageRequest(server::RoomMessageRequest {
room_name: "bleep".to_string(),
message: "yo!".to_string(),
})
);
}
} }

Loading…
Cancel
Save