aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-03-22 21:50:26 +0000
committerFuwn <[email protected]>2021-03-22 21:50:26 +0000
commitd4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55 (patch)
tree32b33ace94dbb89cc67aa3cad6e06e9376902b88 /src/server
parentfeature: Use feature "hash_set_entry" (diff)
downloadwhirl-d4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55.tar.xz
whirl-d4e5c30fd9d2eecdd2af55fd4ee5c0da4cda3f55.zip
etc: Correct struct names
Diffstat (limited to 'src/server')
-rw-r--r--src/server/auto/cmd/mod.rs2
-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.rs2
-rw-r--r--src/server/auto/server.rs47
-rw-r--r--src/server/mod.rs2
-rw-r--r--src/server/room/cmd/mod.rs1
-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.rs1
12 files changed, 55 insertions, 39 deletions
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;