diff options
-rw-r--r-- | src/main-grpc.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main-grpc.cc b/src/main-grpc.cc index d94e4aa..0347aba 100644 --- a/src/main-grpc.cc +++ b/src/main-grpc.cc @@ -7,6 +7,7 @@ #include <chrono> #include <glib.h> #include <glib-unix.h> +#include <systemd/sd-daemon.h> #include "systemd_manager.h" #include "AppLauncherImpl.h" @@ -27,9 +28,9 @@ static gboolean quit_cb(gpointer user_data) return G_SOURCE_REMOVE; } -void RunGrpcServer(std::shared_ptr<Server> &server) +void WaitGrpcServer(std::shared_ptr<Server> &server) { - // Start server and wait for shutdown + // Wait for shutdown server->Wait(); } @@ -58,12 +59,14 @@ int main(int argc, char *argv[]) exit(1); } std::cout << "Server listening on " << server_address << std::endl; + sd_notify(0, "READY=1"); g_unix_signal_add(SIGTERM, quit_cb, (gpointer) &server); g_unix_signal_add(SIGINT, quit_cb, (gpointer) &server); - // Start gRPC API server on its own thread - std::thread grpc_thread(RunGrpcServer, std::ref(server)); + // Wait on gRPC API server in another thread to keep that + // separate from the glib loop. + std::thread grpc_thread(WaitGrpcServer, std::ref(server)); g_main_loop_run(main_loop); |