aboutsummaryrefslogtreecommitdiff
path: root/server/registry/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-21 18:07:18 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-21 18:07:18 +0200
commit362363b3fd1f1fbffe2a3f81d73e71939addd34b (patch)
tree2c406b674a23a27a9bb6c61026243c5929bdca28 /server/registry/src/main.rs
parent34190a70b1efa0972ef58b88d356f985c46b89ae (diff)
downloadhurrycurry-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.rs25
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(())