added basic server messages.

This commit is contained in:
michael-bailey 2021-03-18 09:42:53 +00:00
parent b1be92ed02
commit 042f7e1007
2 changed files with 13 additions and 4 deletions

View File

@ -1,8 +1,7 @@
pub mod client; pub mod client;
mod traits; pub mod traits;
// use crate::lib::server::ServerMessages; // use crate::lib::server::ServerMessages;
use crate::lib::server::ServerMessages;
use std::sync::Arc; use std::sync::Arc;
use std::sync::Mutex; use std::sync::Mutex;
use std::collections::HashMap; use std::collections::HashMap;

View File

@ -1,22 +1,27 @@
pub mod client_management; pub mod client_management;
use std::sync::{Arc, Weak, Mutex};
use std::collections::HashMap; use std::collections::HashMap;
use std::net::TcpListener; use std::net::TcpListener;
use std::sync::Arc;
use std::io::Write; use std::io::Write;
use std::io::Read; use std::io::Read;
use uuid::Uuid;
use crossbeam_channel::{Sender, Receiver, unbounded}; use crossbeam_channel::{Sender, Receiver, unbounded};
use crate::lib::server::client_management::ClientManager; use crate::lib::server::client_management::ClientManager;
use crate::lib::Foundation::{IOwner, IOwned, ICooperative}; use crate::lib::server::client_management::traits::TClientManager;
use crate::lib::Foundation::{ICooperative};
use client_management::client::Client; use client_management::client::Client;
use crate::lib::commands::Commands; use crate::lib::commands::Commands;
/// # ServerMessages
/// This is used internally
#[derive(Debug)] #[derive(Debug)]
pub enum ServerMessages { pub enum ServerMessages {
ClientConnected(Arc<Client>), ClientConnected(Arc<Client>),
ClientDisconnected(Uuid)
} }
pub struct Server { pub struct Server {
@ -40,6 +45,10 @@ impl Server {
receiver, receiver,
}) })
} }
pub fn send_message(&self, msg: ServerMessages) {
self.sender.send(msg).expect("!error sending message to server!")
}
} }
impl ICooperative for Server{ impl ICooperative for Server{
@ -80,6 +89,7 @@ impl ICooperative for Server{
for message in self.receiver.iter() { for message in self.receiver.iter() {
match message { match message {
ServerMessages::ClientConnected(client) => println!("client connected: {:?}", client), ServerMessages::ClientConnected(client) => println!("client connected: {:?}", client),
ServerMessages::ClientDisconnected(uuid) => {self.client_manager.remove_client(uuid);}
} }
} }
} }