From f99d2fd8be9e2323862b1f223745197d7cd04843 Mon Sep 17 00:00:00 2001 From: Davin McCall Date: Tue, 19 Jun 2018 19:40:47 +0100 Subject: [PATCH] service: add various accessors. --- src/includes/baseproc-sys.h | 19 ++++++++++++------- src/includes/proc-service.h | 10 ++++++++++ src/includes/service.h | 20 ++++++++++++++++++++ src/tests/test-includes/baseproc-sys.h | 5 +++++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/includes/baseproc-sys.h b/src/includes/baseproc-sys.h index 6bd0de4..209ad2a 100644 --- a/src/includes/baseproc-sys.h +++ b/src/includes/baseproc-sys.h @@ -29,33 +29,38 @@ class exit_status int status; public: - exit_status() : status(0) { } - explicit exit_status(int status_p) : status(status_p) { } + exit_status() noexcept : status(0) { } + explicit exit_status(int status_p) noexcept : status(status_p) { } - bool did_exit() + bool did_exit() noexcept { return WIFEXITED(status); } - bool did_exit_clean() + bool did_exit_clean() noexcept { return status == 0; } - bool was_signalled() + bool was_signalled() noexcept { return WIFSIGNALED(status); } - int get_exit_status() + int get_exit_status() noexcept { return WEXITSTATUS(status); } - int get_term_sig() + int get_term_sig() noexcept { return WTERMSIG(status); } + + int as_int() noexcept + { + return status; + } }; inline pid_t waitpid(pid_t p, exit_status *statusp, int flags) diff --git a/src/includes/proc-service.h b/src/includes/proc-service.h index 5a0cab3..962a558 100644 --- a/src/includes/proc-service.h +++ b/src/includes/proc-service.h @@ -204,6 +204,16 @@ class base_process_service : public service_record { return exec_arg_parts; } + + pid_t get_pid() override + { + return pid; + } + + int get_exit_status() override + { + return exit_status.as_int(); + } }; // Standard process service. diff --git a/src/includes/service.h b/src/includes/service.h index 1c9e9c5..3745c06 100644 --- a/src/includes/service.h +++ b/src/includes/service.h @@ -639,6 +639,26 @@ class service_record { return stop_reason; } + + bool is_waiting_for_console() + { + return waiting_for_console; + } + + bool has_console() + { + return have_console; + } + + virtual pid_t get_pid() + { + return -1; + } + + virtual int get_exit_status() + { + return 0; + } }; inline auto extract_prop_queue(service_record *sr) -> decltype(sr->prop_queue_node) & diff --git a/src/tests/test-includes/baseproc-sys.h b/src/tests/test-includes/baseproc-sys.h index 8a5674a..af1442c 100644 --- a/src/tests/test-includes/baseproc-sys.h +++ b/src/tests/test-includes/baseproc-sys.h @@ -80,6 +80,11 @@ class exit_status { return status; } + + int as_int() + { + return -1; + } }; inline pid_t waitpid(pid_t p, exit_status *statusp, int flags) -- 2.25.1