From 7628375363e006e2c272f98117609e1595f8cd1a Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 11 Aug 2015 00:13:39 +0200 Subject: [PATCH] Use libsystemd to inform systemd accurately about when the service is up and running. --- Makefile | 4 ++-- cubemap.service.in | 2 +- main.cpp | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index d426bc1..abadaf7 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ CC=gcc CXX=g++ INSTALL=install PROTOC=protoc -CXXFLAGS=-Wall -O2 -g -pthread $(shell getconf LFS_CFLAGS) -LDLIBS=-lprotobuf -pthread -lrt +CXXFLAGS=-Wall -O2 -g -pthread $(shell getconf LFS_CFLAGS) $(shell pkg-config --cflags libsystemd) +LDLIBS=-lprotobuf -pthread -lrt $(shell pkg-config --libs libsystemd) OBJS=main.o client.o server.o stream.o udpstream.o serverpool.o mutexlock.o input.o input_stats.o httpinput.o udpinput.o parse.o config.o acceptor.o stats.o accesslog.o thread.o util.o log.o metacube2.o sa_compare.o state.pb.o diff --git a/cubemap.service.in b/cubemap.service.in index 442e019..9fe97ed 100644 --- a/cubemap.service.in +++ b/cubemap.service.in @@ -2,7 +2,7 @@ Description=Cubemap stream relay [Service] -Type=simple +Type=notify ExecStart=@prefix@/bin/cubemap @sysconfdir@/cubemap.config User=cubemap ExecReload=/bin/kill -HUP $MAINPID diff --git a/main.cpp b/main.cpp index 98d0948..eccf6d7 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -541,10 +542,18 @@ start: log(INFO, "Re-exec happened in approx. %.0f ms.", glitch_time * 1000.0); } + sd_notify(0, "READY=1"); + while (!hupped) { usleep(100000); } + if (stopped) { + sd_notify(0, "STOPPING=1"); + } else { + sd_notify(0, "RELOADING=1"); + } + // OK, we've been HUPed. Time to shut down everything, serialize, and re-exec. err = clock_gettime(CLOCK_MONOTONIC, &serialize_start); assert(err != -1); -- 2.39.2