// Copyright (C) 2020 Sebastian Dröge // // Licensed under the MIT license, see the LICENSE file or use crate::config::Config; use crate::rooms::{Room, Rooms}; use std::sync::{Arc, Mutex}; use actix::{Actor, Addr, Handler, Message, StreamHandler}; use actix_web_actors::ws; use log::debug; /// Actor that represents a WebRTC subscriber. #[derive(Debug)] pub struct Subscriber { cfg: Arc, rooms: Addr, room: Mutex>>, } impl Subscriber { /// Create a new `Subscriber` actor. pub fn new(cfg: Arc, rooms: Addr) -> Self { Subscriber { cfg, rooms, room: Mutex::new(None), } } } impl Actor for Subscriber { type Context = ws::WebsocketContext; } impl StreamHandler> for Subscriber { fn handle(&mut self, _msg: Result, _ctx: &mut Self::Context) { // TODO } } /// Leave a `Room` by a `Subscriber`. #[derive(Debug)] pub struct RoomDeletedMessage; impl Message for RoomDeletedMessage { type Result = (); } impl Handler for Subscriber { type Result = (); fn handle( &mut self, _msg: RoomDeletedMessage, _ctx: &mut ws::WebsocketContext, ) -> Self::Result { debug!("Room deleted"); // TODO } }