summaryrefslogtreecommitdiff
path: root/server/registry/src/main.rs
diff options
context:
space:
mode:
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(())