use std::{ collections::HashMap, net::SocketAddr, sync::Arc, }; use warp::ws::Message; use tokio::sync::RwLock; use crate::minesweeper; #[derive(Debug, Clone)] pub struct Config { pub cert_path: String, pub pkey_path: String, pub page_path: String, pub socket_addr: SocketAddr, } #[derive(Debug, Clone)] pub struct State { pub conf: Config, pub peers: PeerMap, } #[derive(Debug)] pub enum MetaMove { Move(minesweeper::Move,SocketAddr), Dump, Reset, } #[derive(Debug)] pub struct Peer { pub tx: tokio::sync::mpsc::UnboundedSender, pub seq_id: usize, pub name: String, pub position: (usize, usize), } pub struct ConnData { pub cmd_tx: CmdTx, pub remote_addr: SocketAddr, pub peers: PeerMap, } pub type CmdTx = tokio::sync::mpsc::UnboundedSender; pub type PeerMap = Arc>>;