diff options
| author | Fuwn <[email protected]> | 2021-03-22 21:50:26 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-03-22 21:50:26 +0000 |
| commit | d4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55 (patch) | |
| tree | 32b33ace94dbb89cc67aa3cad6e06e9376902b88 /src | |
| parent | feature: Use feature "hash_set_entry" (diff) | |
| download | whirl-d4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55.tar.xz whirl-d4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55.zip | |
etc: Correct struct names
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 8 | ||||
| -rw-r--r-- | src/server/auto/cmd/mod.rs | 2 | ||||
| -rw-r--r-- | src/server/auto/cmd/room.rs (renamed from src/server/world/cmd/room.rs) | 4 | ||||
| -rw-r--r-- | src/server/auto/constants.rs (renamed from src/server/world/constants.rs) | 0 | ||||
| -rw-r--r-- | src/server/auto/mod.rs | 2 | ||||
| -rw-r--r-- | src/server/auto/server.rs | 47 | ||||
| -rw-r--r-- | src/server/mod.rs | 2 | ||||
| -rw-r--r-- | src/server/room/cmd/mod.rs | 1 | ||||
| -rw-r--r-- | src/server/room/cmd/property.rs (renamed from src/server/auto/cmd/property.rs) | 0 | ||||
| -rw-r--r-- | src/server/room/mod.rs (renamed from src/server/world/mod.rs) | 2 | ||||
| -rw-r--r-- | src/server/room/server.rs (renamed from src/server/world/server.rs) | 33 | ||||
| -rw-r--r-- | src/server/room/utils.rs (renamed from src/server/auto/utils.rs) | 0 | ||||
| -rw-r--r-- | src/server/world/cmd/mod.rs | 1 |
13 files changed, 59 insertions, 43 deletions
diff --git a/src/main.rs b/src/main.rs index 2534b40..d6612b2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,16 +11,16 @@ fn main() { let mut threads = vec![]; threads.push(thread::spawn(move || { - debug!("spawned WorldServer thread"); - server::world::server::WorldServer::new( + debug!("spawned AutoServer thread"); + server::auto::server::AutoServer::new( TcpListener::bind( &"0.0.0.0:6650".parse().unwrap() ).unwrap() ); })); threads.push(thread::spawn(move || { - debug!("spawned AutoServer thread"); - server::auto::server::AutoServer::new( + debug!("spawned RoomServer thread"); + server::room::server::RoomServer::new( TcpListener::bind( &"0.0.0.0:5673".parse().unwrap() ).unwrap() diff --git a/src/server/auto/cmd/mod.rs b/src/server/auto/cmd/mod.rs index f348cd0..addf7a5 100644 --- a/src/server/auto/cmd/mod.rs +++ b/src/server/auto/cmd/mod.rs @@ -1 +1 @@ -pub mod property; +pub mod room; diff --git a/src/server/world/cmd/room.rs b/src/server/auto/cmd/room.rs index e41e30f..ff839f3 100644 --- a/src/server/world/cmd/room.rs +++ b/src/server/auto/cmd/room.rs @@ -1,4 +1,4 @@ -pub fn create_room_id_redirect_command(room_name: &str, room_id: &i32) -> Vec<u8> { +pub fn create_room_id_redirect_command(room_name: &str, room_id: usize) -> Vec<u8> { let mut room_id_redirect = Vec::new(); // room_id_redirect.push(room_id_redirect.len() as u8 + 1); // Data length room_id_redirect.push(0x01); // ? @@ -9,7 +9,7 @@ pub fn create_room_id_redirect_command(room_name: &str, room_id: &i32) -> Vec<u8 // Room number room_id_redirect.push(0x00); - room_id_redirect.push(*room_id as u8); + room_id_redirect.push(room_id as u8); // IP room_id_redirect.push(0x00); diff --git a/src/server/world/constants.rs b/src/server/auto/constants.rs index 10c9439..10c9439 100644 --- a/src/server/world/constants.rs +++ b/src/server/auto/constants.rs diff --git a/src/server/auto/mod.rs b/src/server/auto/mod.rs index 7ceb58d..741d763 100644 --- a/src/server/auto/mod.rs +++ b/src/server/auto/mod.rs @@ -1,3 +1,3 @@ pub mod cmd; +// pub mod constants; pub mod server; -pub mod utils; diff --git a/src/server/auto/server.rs b/src/server/auto/server.rs index 87f5e07..361ae00 100644 --- a/src/server/auto/server.rs +++ b/src/server/auto/server.rs @@ -1,15 +1,20 @@ use mio::net::{TcpListener, TcpStream}; use std::io::{Read, Write}; use mio::{Poll, Token, Ready, PollOpt, Events}; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use std::str::from_utf8; use crate::cmd::buddy_list::create_buddy_list_notify_command; use crate::cmd::text::create_text_command; -// use crate::cmd::property::{create_property_update_command, create_property_request_command}; -use crate::server::auto::cmd::property::{create_property_update_command, create_property_request_command}; +use crate::cmd::property::{create_property_update_command, create_property_request_command}; +use super::cmd::room::create_room_id_redirect_command; use rand::Rng; use crate::server::utils::broadcast_to_all_clients; +// pub struct ClientSocket { +// tcp_stream: TcpStream, +// username: String, +// } + pub struct AutoServer; impl AutoServer { pub fn new(listener: TcpListener) { @@ -25,6 +30,8 @@ impl AutoServer { let mut sockets: HashMap<Token, TcpStream> = HashMap::new(); let mut requests: HashMap<Token, Vec<u8>> = HashMap::new(); let mut buffer = [0 as u8; 1024]; + // let mut room_ids: HashMap<&str, i32> = HashMap::new(); + let mut room_ids: HashSet<String> = HashSet::new(); let mut events = Events::with_capacity(1024); loop { @@ -102,10 +109,40 @@ impl AutoServer { sockets.get_mut(&token).unwrap() .write_all(&create_buddy_list_notify_command("Wirlaburla")) .unwrap(); - info!("sent buddy notify update command") + info!("sent buddy notify update command"); } // ROOMIDRQ - 20 => info!("received room id request command"), + 20 => { + info!("received room id request command"); + + let room_name = from_utf8( + &buffer[4..*&buffer.get(0).unwrap().to_owned() as usize] + ).unwrap(); + let mut room_id = 0; + if !room_ids.contains(room_name) { + room_ids.insert(room_name.to_string()); + let new = room_ids.iter() + .position(|i| i == room_name) + .unwrap(); + debug!("inserted room '{}' as '{}'", room_name, new); + } else { + let pos = room_ids + .iter() + .position(|i| i == room_name) + .unwrap(); + debug!("found room '{}' as '{}'", room_name, pos); + room_id = pos; + } + debug!("room name: {}, room id: {}", room_name, room_id); + debug!("{:?}", room_ids); + + // Passing `0` as `room_id` parameter as currently there is + // no way to find out a room's ID based on it's name. + sockets.get_mut(&token).unwrap() + .write_all(&create_room_id_redirect_command(room_name, room_id)) + .unwrap(); + info!("sent redirect id command") + } // TEXT 14 => { info!("received text command"); diff --git a/src/server/mod.rs b/src/server/mod.rs index ae2ae83..e741e07 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -1,3 +1,3 @@ pub mod auto; +pub mod room; pub mod utils; -pub mod world; diff --git a/src/server/room/cmd/mod.rs b/src/server/room/cmd/mod.rs new file mode 100644 index 0000000..f348cd0 --- /dev/null +++ b/src/server/room/cmd/mod.rs @@ -0,0 +1 @@ +pub mod property; diff --git a/src/server/auto/cmd/property.rs b/src/server/room/cmd/property.rs index b75efad..b75efad 100644 --- a/src/server/auto/cmd/property.rs +++ b/src/server/room/cmd/property.rs diff --git a/src/server/world/mod.rs b/src/server/room/mod.rs index 741d763..7ceb58d 100644 --- a/src/server/world/mod.rs +++ b/src/server/room/mod.rs @@ -1,3 +1,3 @@ pub mod cmd; -// pub mod constants; pub mod server; +pub mod utils; diff --git a/src/server/world/server.rs b/src/server/room/server.rs index 6aa2401..27a8b24 100644 --- a/src/server/world/server.rs +++ b/src/server/room/server.rs @@ -5,19 +5,13 @@ use std::collections::HashMap; use std::str::from_utf8; use crate::cmd::buddy_list::create_buddy_list_notify_command; use crate::cmd::text::create_text_command; -use crate::cmd::property::{create_property_update_command, create_property_request_command}; -use super::cmd::room::create_room_id_redirect_command; +// use crate::cmd::property::{create_property_update_command, create_property_request_command}; +use crate::server::room::cmd::property::{create_property_update_command, create_property_request_command}; use rand::Rng; use crate::server::utils::broadcast_to_all_clients; -// use super::constants::ROOM_IDS; -// pub struct ClientSocket { -// tcp_stream: TcpStream, -// username: String, -// } - -pub struct WorldServer; -impl WorldServer { +pub struct RoomServer; +impl RoomServer { pub fn new(listener: TcpListener) { let poll = Poll::new().unwrap(); poll.register( @@ -108,25 +102,10 @@ impl WorldServer { sockets.get_mut(&token).unwrap() .write_all(&create_buddy_list_notify_command("Wirlaburla")) .unwrap(); - info!("sent buddy notify update command"); + info!("sent buddy notify update command") } // ROOMIDRQ - 20 => { - info!("received room id request command"); - - let room_name = from_utf8( - &buffer[4..*&buffer.get(0).unwrap().to_owned() as usize] - ).unwrap(); - // let room_id = ROOM_IDS.get(&room_name[11..]).cloned().unwrap(); - // debug!("room name: {}, room id: {}", room_name, room_id); - - // Passing `0` as `room_id` parameter as currently there is - // no way to find out a room's ID based on it's name. - sockets.get_mut(&token).unwrap() - .write_all(&create_room_id_redirect_command(room_name, &0)) - .unwrap(); - info!("sent redirect id command") - } + 20 => info!("received room id request command"), // TEXT 14 => { info!("received text command"); diff --git a/src/server/auto/utils.rs b/src/server/room/utils.rs index e69de29..e69de29 100644 --- a/src/server/auto/utils.rs +++ b/src/server/room/utils.rs diff --git a/src/server/world/cmd/mod.rs b/src/server/world/cmd/mod.rs deleted file mode 100644 index addf7a5..0000000 --- a/src/server/world/cmd/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod room; |