- update: moved signal handler into utils crate to make it easier to update

- fix: windows compile issue due to exposed unix signal
This commit is contained in:
2025-01-05 22:49:55 -05:00
parent f8243fe68c
commit 9f63a5fd3a
11 changed files with 37 additions and 68 deletions

View File

@@ -67,15 +67,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
info!("Starting REST API on {}:{}", addr, port);
tokio::spawn(axum_gateway::serve_rest_api(grpc_client));
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str())
.await

View File

@@ -78,15 +78,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.add_service(AuthServiceServer::new(auth_service))
.serve(address));
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
info!("service {} deregistered", service_name);

View File

@@ -63,15 +63,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.await?;
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
Ok(())

View File

@@ -73,16 +73,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.add_service(CharacterServiceServer::new(my_service))
.serve(address));
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
info!("service {} deregistered", service_name);
Ok(())

View File

@@ -110,7 +110,6 @@ pub(crate) async fn handle_delete_char_req(stream: &mut TcpStream, packet: Packe
}
let mut character_client = character_client.lock().await;
// character_client.delete_character(request.is_delete, request.char_id, request.name);
character_client.delete_character(&user_id.to_string(), &request.char_id.to_string());
let character_name = request.name;
@@ -134,7 +133,7 @@ pub(crate) async fn handle_select_char_req(stream: &mut TcpStream, packet: Packe
}
let mut character_client = character_client.lock().await;
// character_client.get_character(&user_id.to_string(), request.char_id);
character_client.get_character(&user_id.to_string(), request.char_id);
let mut equipped_item_list: [EquippedItem; (MAX_VISIBLE_ITEMS as usize)] = core::array::from_fn(|i| EquippedItem::default());
let mut effect_list: [StatusEffect; (MAX_STATUS_EFFECTS as usize)] = core::array::from_fn(|i| StatusEffect::default());
let mut hotbar_list: [HotbarItem; (MAX_HOTBAR_ITEMS as usize)] = core::array::from_fn(|i| HotbarItem::default());

View File

@@ -131,15 +131,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
}
});
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
info!("service {} deregistered", service_name);

View File

@@ -68,15 +68,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.add_service(SessionServiceServer::new(session_service))
.serve(address));
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
Ok(())

View File

@@ -10,7 +10,7 @@ tracing = "0.1"
rand = "0.9.0-beta.1"
uuid = { version = "1.11.0", features = ["v4"] }
warp = "0.3.7"
tokio = "1.41.1"
tokio = { version = "1.41.1", features = ["full"] }
bincode = { version = "2.0.0-rc.3", features = ["derive", "serde"] }
redis = "0.27.5"
deadpool-redis = "0.18.0"

View File

@@ -2,3 +2,4 @@ pub mod consul_registration;
pub mod service_discovery;
pub mod null_string;
pub mod redis_cache;
pub mod signal_handler;

View File

@@ -0,0 +1,27 @@
use tokio::{select, signal};
use tracing::info;
pub async fn wait_for_signal() {
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = terminate_signal() => {
info!("Received termination signal, shutting down...");
},
}
}
async fn terminate_signal() {
#[cfg(unix)]
{
use tokio::signal::unix::{signal, SignalKind};
let mut sigterm = signal(SignalKind::terminate()).expect("Failed to set up SIGTERM handler");
sigterm.recv().await;
}
#[cfg(windows)]
{
signal::ctrl_break().await.expect("Failed to set up CTRL_BREAK handler");
}
}

View File

@@ -50,16 +50,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let db_address = db_nodes.get(0).unwrap();
let db_url = format!("http://{}:{}", db_address.ServiceAddress, db_address.ServicePort);
let mut sigterm_stream = signal::unix::signal(signal::unix::SignalKind::terminate())?;
select! {
_ = signal::ctrl_c() => {
info!("Received SIGINT (Ctrl+C), shutting down...");
},
_ = sigterm_stream.recv() => {
info!("Received SIGTERM, shutting down...");
},
}
utils::signal_handler::wait_for_signal().await;
consul_registration::deregister_service(&consul_url, service_id.as_str()).await.expect("");
Ok(())
}