diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-21 18:07:18 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-21 18:07:18 +0200 |
commit | 362363b3fd1f1fbffe2a3f81d73e71939addd34b (patch) | |
tree | 2c406b674a23a27a9bb6c61026243c5929bdca28 /server/registry/src/main.rs | |
parent | 34190a70b1efa0972ef58b88d356f985c46b89ae (diff) | |
download | hurrycurry-362363b3fd1f1fbffe2a3f81d73e71939addd34b.tar hurrycurry-362363b3fd1f1fbffe2a3f81d73e71939addd34b.tar.bz2 hurrycurry-362363b3fd1f1fbffe2a3f81d73e71939addd34b.tar.zst |
redirect packet
Diffstat (limited to 'server/registry/src/main.rs')
-rw-r--r-- | server/registry/src/main.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/server/registry/src/main.rs b/server/registry/src/main.rs index 670ac3a6..2e0b7656 100644 --- a/server/registry/src/main.rs +++ b/server/registry/src/main.rs @@ -15,12 +15,15 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +#![feature(never_type)] pub mod conn_test; pub mod list; +pub mod lobby; pub mod register; use hurrycurry_protocol::registry::Entry; use list::{generate_html_list, generate_json_list, r_list}; +use lobby::lobby_wrapper; use log::{error, info}; use register::r_register; use rocket::{get, routes, Config}; @@ -28,7 +31,7 @@ use std::{ cmp::Reverse, collections::HashMap, env::var, - net::{IpAddr, Ipv4Addr}, + net::{IpAddr, Ipv4Addr, SocketAddr}, str::FromStr, sync::Arc, time::{Duration, Instant}, @@ -40,19 +43,29 @@ const MAX_SERVERS: usize = 128; fn main() { env_logger::init_from_env("LOG"); + + let address = var("BIND_ADDR") + .map(|a| IpAddr::from_str(&a).unwrap()) + .unwrap_or(IpAddr::V4(Ipv4Addr::LOCALHOST)); + let http_port = var("PORT").map(|p| p.parse().unwrap()).unwrap_or(27033); + let lobby_port = var("LOBBY_PORT") + .map(|p| p.parse().unwrap()) + .unwrap_or(27034); + let lobby_addr = SocketAddr::new(address, lobby_port); + let registry = Arc::new(RwLock::new(Registry::default())); + tokio::runtime::Builder::new_multi_thread() .enable_all() .build() .unwrap() .block_on(async move { tokio::task::spawn(Registry::update_loop(registry.clone())); + tokio::task::spawn(lobby_wrapper(registry.clone(), lobby_addr)); rocket::build() .configure(Config { - address: var("BIND_ADDR") - .map(|a| IpAddr::from_str(&a).unwrap()) - .unwrap_or(IpAddr::V4(Ipv4Addr::LOCALHOST)), - port: var("PORT").map(|p| p.parse().unwrap()).unwrap_or(27033), + address, + port: http_port, ..Default::default() }) .manage(registry) @@ -70,6 +83,7 @@ fn main() { struct Registry { json_response: Arc<str>, html_response: Arc<str>, + entries: Vec<Entry>, servers: HashMap<u128, InternalEntry>, } @@ -107,6 +121,7 @@ impl Registry { self.json_response = generate_json_list(&list)?; self.html_response = generate_html_list(&list)?; + self.entries = list; info!("done. {} servers registered", self.servers.len()); Ok(()) |