3 Commits

3 changed files with 15 additions and 11 deletions
Split View
  1. +8
    -0
      client/src/room/event.rs
  2. +4
    -11
      client/src/room/map.rs
  3. +3
    -0
      client/src/room/state.rs

+ 8
- 0
client/src/room/event.rs View File

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


+ 4
- 11
client/src/room/map.rs View File

@ -1,3 +1,6 @@
//! This module defines abstractions for handling the global set of rooms and
//! their state.
use std::collections::HashMap;
use std::mem;
@ -7,16 +10,6 @@ use thiserror::Error;
use crate::room::{RoomMembership, RoomMessage, RoomState, RoomVisibility};
/// The error returned by RoomMap functions.
#[derive(Debug, Error)]
pub enum RoomError {
#[error(transparent)]
RoomNotFound(#[from] RoomNotFoundError),
#[error(transparent)]
MembershipChangeInvalid(#[from] RoomMembershipChangeError),
}
#[derive(Debug, Error)]
#[error("cannot change membership from {0:?} to {1:?}")]
pub struct RoomMembershipChangeError(RoomMembership, RoomMembership);
@ -162,7 +155,7 @@ impl RoomMap {
self
.map
.insert(name.clone(), RoomEntry::new(name, room))
.map(|entry| entry.state)
.map(|entry| entry.into_state())
}
/// Looks up the given room name in the map, returning an immutable


+ 3
- 0
client/src/room/state.rs View File

@ -1,3 +1,6 @@
//! This module defines the data structures used for room state storage and
//! serialization.
use std::collections::HashSet;
use std::time::SystemTime;


Loading…
Cancel
Save