31 lines
714 B
Rust
31 lines
714 B
Rust
use std::{collections::HashMap, sync::Arc};
|
|
|
|
use tokio::sync::{mpsc, Mutex};
|
|
|
|
pub mod message;
|
|
use message::Message;
|
|
mod code_generator;
|
|
use code_generator::CodeGenerator;
|
|
|
|
#[derive(Default)]
|
|
pub struct GlobalState {
|
|
pub code_generator: Arc<Mutex<CodeGenerator>>,
|
|
pub rooms: Arc<Mutex<HashMap<String, Arc<Mutex<GameController>>>>>,
|
|
}
|
|
|
|
pub struct Channel {
|
|
pub tx: mpsc::Sender<Message>,
|
|
pub rx: mpsc::Receiver<Message>,
|
|
}
|
|
|
|
pub fn channel_pair() -> (Channel, Channel) {
|
|
let (atx, brx) = mpsc::channel(32);
|
|
let (btx, arx) = mpsc::channel(32);
|
|
(Channel { tx: atx, rx: arx }, Channel { tx: btx, rx: brx })
|
|
}
|
|
|
|
#[derive(Default)]
|
|
pub struct GameController {
|
|
pub channels: Vec<Channel>,
|
|
}
|