- 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:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(())
|
||||
|
||||
@@ -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(())
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(())
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -2,3 +2,4 @@ pub mod consul_registration;
|
||||
pub mod service_discovery;
|
||||
pub mod null_string;
|
||||
pub mod redis_cache;
|
||||
pub mod signal_handler;
|
||||
|
||||
27
utils/src/signal_handler.rs
Normal file
27
utils/src/signal_handler.rs
Normal 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");
|
||||
}
|
||||
}
|
||||
@@ -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(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user