11 #include <RADCore/RADCore.h>
65 std::unique_ptr<RADCore::RADLockFile> lock_;
76 static bool notify(
const std::string& message, std::string* error =
nullptr);
84 static bool daemonize(std::string* error =
nullptr);
Service helper methods.
Definition: RADService.h:69
static bool writeSystemdUnit(const ServiceUnit &unit, const std::string &directory, std::string *error=nullptr)
Writes a systemd unit file to directory.
static std::string generateSystemdUnit(const ServiceUnit &unit)
Serializes a systemd unit file.
static bool daemonize(std::string *error=nullptr)
Performs a Unix double-fork daemonization when supported.
static bool notifyWatchdog(std::string *error=nullptr)
Sends WATCHDOG=1 notification.
static bool notifyReady(std::string *error=nullptr)
Sends READY=1 notification.
static bool notify(const std::string &message, std::string *error=nullptr)
Sends sd_notify-compatible message to NOTIFY_SOCKET without libsystemd.
static std::string restartPolicyName(RestartPolicy policy)
Converts restart policy to systemd text.
Single-instance app lock using RADCore::RADLockFile.
Definition: RADService.h:53
bool tryLock()
Attempts to acquire the lock.
SingleInstanceLock(std::string path)
Creates a lock for path.
~SingleInstanceLock()
Releases the lock.
bool isLocked() const
Returns true when lock is held.
Definition: RADService.h:18
RestartPolicy
Restart policy for generated service units.
Definition: RADService.h:21
@ OnFailure
Restart on abnormal failure.
Systemd service unit description.
Definition: RADService.h:31
RestartPolicy restart
Restart policy.
Definition: RADService.h:43
std::string wantedBy
WantedBy target.
Definition: RADService.h:49
std::map< std::string, std::string > environment
Environment key/value pairs.
Definition: RADService.h:41
std::string description
Description text.
Definition: RADService.h:35
int watchdogSec
Watchdog timeout seconds; 0 disables WatchdogSec.
Definition: RADService.h:45
std::string execStart
Executable command.
Definition: RADService.h:37
std::string workingDirectory
Optional working directory.
Definition: RADService.h:39
std::string user
User name for service execution.
Definition: RADService.h:47
std::string name
Unit name without .service.
Definition: RADService.h:33