exposed server as lib
+created lib output for server + added extra dependencies + added functions to retrieve the port of a server
This commit is contained in:
parent
ec2b16c10a
commit
31a25c2f20
|
|
@ -16,4 +16,7 @@ crossbeam-channel = "0.5.0"
|
|||
tokio = { version = "1.9.0", features = ["full"] }
|
||||
futures = "0.3.16"
|
||||
|
||||
foundation = {path = '../foundation'}
|
||||
async-trait = "0.1.52"
|
||||
|
||||
server = {path = '../server'}
|
||||
foundation = {path = '../foundation'}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ edition = "2018"
|
|||
[lib]
|
||||
|
||||
[dependencies]
|
||||
async-trait = "0.1.52"
|
||||
regex = "1"
|
||||
crossbeam = "0.8.0"
|
||||
crossbeam-channel = "0.5.0"
|
||||
|
|
@ -21,5 +22,6 @@ log = "0.4"
|
|||
url = "2.2.0"
|
||||
uuid = {version = "0.8", features = ["serde", "v4"]}
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tokio = { version = "1.9.0", features = ["full"] }
|
||||
serde_json = "1.0"
|
||||
openssl = "0.10"
|
||||
|
|
@ -6,6 +6,14 @@ edition = "2018"
|
|||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[lib]
|
||||
name = "serverlib"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "server"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.3"
|
||||
uuid = {version = "0.8", features = ["serde", "v4"]}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
mod chat_manager;
|
||||
mod client;
|
||||
mod client_manager;
|
||||
mod messages;
|
||||
mod network_manager;
|
||||
mod server;
|
||||
|
||||
pub use server::Server;
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
use std::io::Write;
|
||||
use std::net::SocketAddr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use tokio::io::{self, AsyncBufReadExt, AsyncWriteExt, BufReader};
|
||||
|
|
@ -11,20 +12,24 @@ use crate::messages::ServerMessage;
|
|||
use foundation::messages::network::{NetworkSockIn, NetworkSockOut};
|
||||
|
||||
pub struct NetworkManager {
|
||||
address: String,
|
||||
address: SocketAddr,
|
||||
server_channel: Sender<ServerMessage>,
|
||||
}
|
||||
|
||||
impl NetworkManager {
|
||||
pub fn new(
|
||||
_port: String,
|
||||
port: u16,
|
||||
server_channel: Sender<ServerMessage>,
|
||||
) -> Arc<NetworkManager> {
|
||||
Arc::new(NetworkManager {
|
||||
address: "0.0.0.0:5600".to_string(),
|
||||
address: format!("0.0.0.0:{}", port).parse().unwrap(),
|
||||
server_channel,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn port(&self) -> u16 {
|
||||
self.address.port()
|
||||
}
|
||||
|
||||
pub fn start(self: &Arc<NetworkManager>) {
|
||||
let network_manager = self.clone();
|
||||
|
|
@ -65,8 +70,8 @@ impl NetworkManager {
|
|||
let _ = wd
|
||||
.write_all(
|
||||
serde_json::to_string(&NetworkSockOut::GotInfo {
|
||||
server_name: "oof",
|
||||
server_owner: "michael",
|
||||
server_name: "oof".to_string(),
|
||||
server_owner: "michael".to_string(),
|
||||
})
|
||||
.unwrap()
|
||||
.as_bytes(),
|
||||
|
|
|
|||
|
|
@ -31,11 +31,15 @@ impl Server {
|
|||
|
||||
Ok(Arc::new(Server {
|
||||
client_manager: ClientManager::new(sender.clone()),
|
||||
network_manager: NetworkManager::new("5600".to_string(), sender),
|
||||
network_manager: NetworkManager::new("5600".parse().unwrap(), sender),
|
||||
receiver: Mutex::new(receiver),
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn port(self: &Arc<Server>) -> u16 {
|
||||
self.network_manager.port()
|
||||
}
|
||||
|
||||
pub async fn start(self: &Arc<Server>) {
|
||||
// start client manager and network manager
|
||||
self.network_manager.clone().start();
|
||||
|
|
|
|||
Loading…
Reference in New Issue