|
|
@ -1,3 +1,5 @@ |
|
|
|
|
|
//! This module defines events affecting the room module and their handling.
|
|
|
|
|
|
|
|
|
use solstice_proto::server::{
|
|
|
use solstice_proto::server::{
|
|
|
RoomJoinResponse, RoomListResponse, RoomMessageResponse,
|
|
|
RoomJoinResponse, RoomListResponse, RoomMessageResponse,
|
|
|
};
|
|
|
};
|
|
|
@ -11,6 +13,7 @@ use crate::handlers::{ |
|
|
};
|
|
|
};
|
|
|
use crate::message_handler::MessageHandler;
|
|
|
use crate::message_handler::MessageHandler;
|
|
|
|
|
|
|
|
|
|
|
|
/// An event affecting the chat room module.
|
|
|
#[derive(Debug, PartialEq, Eq)]
|
|
|
#[derive(Debug, PartialEq, Eq)]
|
|
|
pub enum RoomEvent {
|
|
|
pub enum RoomEvent {
|
|
|
JoinRequest(String),
|
|
|
JoinRequest(String),
|
|
|
@ -21,7 +24,11 @@ pub enum RoomEvent { |
|
|
MessageResponse(RoomMessageResponse),
|
|
|
MessageResponse(RoomMessageResponse),
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// An interface for room event handlers.
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Allows mocking of handlers in tests.
|
|
|
pub trait HandleRoomEvent {
|
|
|
pub trait HandleRoomEvent {
|
|
|
|
|
|
/// Handles the given `event` against the given global `context`.
|
|
|
fn handle(
|
|
|
fn handle(
|
|
|
&mut self,
|
|
|
&mut self,
|
|
|
context: &mut Context,
|
|
|
context: &mut Context,
|
|
|
@ -29,6 +36,7 @@ pub trait HandleRoomEvent { |
|
|
) -> anyhow::Result<()>;
|
|
|
) -> anyhow::Result<()>;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// The real, default implementation of `HandleRoomEvent`.
|
|
|
#[derive(Default)]
|
|
|
#[derive(Default)]
|
|
|
pub struct RoomEventHandler;
|
|
|
pub struct RoomEventHandler;
|
|
|
|
|
|
|
|
|
|