From 73f5ca6e5766535bd81ab9db3575a6d5d6359129 Mon Sep 17 00:00:00 2001 From: William Roebuck <244554584+WilliamRoebuck@users.noreply.github.com> Date: Mon, 10 Aug 2026 14:53:11 +0100 Subject: [PATCH 1/3] Simplify some wrappers --- .../src/alive_monitor/details/common/BUILD | 8 --- .../alive_monitor/details/common/Types.hpp | 34 ----------- .../src/alive_monitor/details/factory/BUILD | 1 - .../details/factory/FlatCfgFactory.cpp | 13 ++--- .../details/ifappl/MonitorIfDaemon.cpp | 2 +- .../details/ifappl/MonitorIfDaemon_UT.cpp | 41 +++++-------- .../src/alive_monitor/details/ifexm/BUILD | 15 ----- .../details/ifexm/ProcessCfg.hpp | 57 ------------------- .../details/ifexm/ProcessState.cpp | 38 +------------ .../details/ifexm/ProcessState.hpp | 43 +------------- .../details/ifexm/ProcessStateReader.cpp | 16 +++--- .../details/ifexm/ProcessStateReader.hpp | 7 +-- .../details/supervision/Alive.cpp | 6 +- .../details/supervision/Alive_UT.cpp | 31 ++++------ .../alive_monitor/details/supervision/BUILD | 1 - .../details/supervision/SupervisionCfg.hpp | 1 - 16 files changed, 50 insertions(+), 264 deletions(-) delete mode 100644 score/launch_manager/src/daemon/src/alive_monitor/details/common/Types.hpp delete mode 100644 score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessCfg.hpp diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/common/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/common/BUILD index a2d22ab84..e661616f3 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/common/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/common/BUILD @@ -13,14 +13,6 @@ load("@rules_cc//cc:defs.bzl", "cc_library") load("//tests/utils/bazel:unit_test.bzl", "lm_cc_test") -cc_library( - name = "types", - hdrs = ["Types.hpp"], - include_prefix = "score/mw/launch_manager/alive_monitor/details/common", - strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/common", - visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], -) - cc_library( name = "alive_monitor_config", srcs = ["AliveMonitorConfig.cpp"], diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/common/Types.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/common/Types.hpp deleted file mode 100644 index d10c1a4e5..000000000 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/common/Types.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ -#ifndef TYPES_HPP_INCLUDED -#define TYPES_HPP_INCLUDED - -#include - -namespace score -{ -namespace lcm -{ -namespace saf -{ -namespace common -{ - -using ProcessId = std::size_t; - -} // namespace common -} // namespace saf -} // namespace lcm -} // namespace score - -#endif diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD index 1b9cee8ba..bdd1c7244 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD @@ -45,7 +45,6 @@ cc_library( deps = [ ":i_phm_factory", "//score/launch_manager/src/daemon/src/alive_monitor/details/common:alive_monitor_config", - "//score/launch_manager/src/daemon/src/alive_monitor/details/common:types", "//score/launch_manager/src/daemon/src/alive_monitor/details/factory:static_config", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:checkpoint", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:monitor_if_daemon", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp index d7c45e6d8..6c5a58082 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp @@ -67,14 +67,9 @@ bool FlatCfgFactory::createProcessStates( f_processStates_r.reserve(supervised_components_.size()); for (const auto& comp : supervised_components_) { - ifexm::ProcessCfg processCfg{}; - processCfg.processShortName = std::string_view(comp.name); - - const auto processId = getProcessId(comp); - processCfg.processId = processId.data(); - - f_processStates_r.emplace_back(processCfg); - isSuccess = f_processStateReader_r.registerProcessState(f_processStates_r.back(), processCfg.processId); + const auto id = IdentifierHash{comp.name}; + f_processStates_r.emplace_back(id); + isSuccess = f_processStateReader_r.registerProcessState(f_processStates_r.back(), id); if (!isSuccess) { break; @@ -97,7 +92,7 @@ bool FlatCfgFactory::createProcessStates( { for (auto& processState_r : f_processStates_r) { - f_processStateReader_r.deregisterProcessState(processState_r.getProcessId()); + f_processStateReader_r.deregisterProcessState(processState_r.event.id); } f_processStates_r.clear(); LM_LOG_ERROR() << "Could not create all necessary Process States."; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp index 714f996f0..5d87f9f04 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp @@ -44,7 +44,7 @@ void MonitorIfDaemon::attachCheckpoint(Checkpoint& f_checkpoint_r) noexcept(fals void MonitorIfDaemon::updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) { - switch (f_observable_r.getEventType()) + switch (f_observable_r.event.eventType) { case score::lcm::SupervisionEventType::kActivation: if (isDeactivateRequest) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp index 96992361a..bfe258a1d 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp @@ -20,7 +20,6 @@ #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/DataStructures.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/MonitorIfDaemon.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessCfg.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" using namespace testing; @@ -48,10 +47,9 @@ class CheckpointMock : public common::Observer struct MonitorIfDaemonFixture { - static constexpr std::string_view kProcessName = "test_proc"; static constexpr std::string_view kCheckpointName = "test_cp"; static constexpr uint32_t kCheckpointId = 1U; - static constexpr common::ProcessId kProcessId = 42U; + inline static const IdentifierHash kProcessId {"test_proc"}; static constexpr std::string_view kInterfaceName = "test_interface"; ifexm::ProcessState processState; @@ -61,7 +59,7 @@ struct MonitorIfDaemonFixture CheckpointMock checkpointMock; MonitorIfDaemonFixture() - : processState(makeProcessCfg()), + : processState(kProcessId), checkpoint(kCheckpointName.data(), kCheckpointId, &processState), ipcServer{}, monitor(ipcServer, kInterfaceName.data()) @@ -79,18 +77,18 @@ struct MonitorIfDaemonFixture } /// Send an activation event and notify observers. - void activateProcess(timers::NanoSecondType ts) + void activateProcess(long ts) { - processState.setTimestamp(ts); - processState.setEventType(score::lcm::SupervisionEventType::kActivation); + processState.event.systemClockTimestamp.tv_nsec = ts; + processState.event.eventType = score::lcm::SupervisionEventType::kActivation; processState.pushData(); } /// Send a deactivation event and notify observers. - void deactivateProcess(timers::NanoSecondType ts) + void deactivateProcess(long ts) { - processState.setTimestamp(ts); - processState.setEventType(score::lcm::SupervisionEventType::kDeactivation); + processState.event.systemClockTimestamp.tv_nsec = ts; + processState.event.eventType = score::lcm::SupervisionEventType::kDeactivation; processState.pushData(); } @@ -109,15 +107,6 @@ struct MonitorIfDaemonFixture ipcServer.sendEmplace(static_cast(i), 0U); } } - - private: - static ifexm::ProcessCfg makeProcessCfg() - { - ifexm::ProcessCfg cfg{}; - cfg.processShortName = kProcessName; - cfg.processId = kProcessId; - return cfg; - } }; } // namespace @@ -125,15 +114,15 @@ struct MonitorIfDaemonFixture class MonitorIfDaemonTest : public ::testing::Test { private: - timers::NanoSecondType time_ = 0U; - static constexpr timers::NanoSecondType kTimeStep = 100U; + timespec time_{}; + static constexpr long kTimeStep = 100U; protected: void SetUp() override { RecordProperty("TestType", "interface-test"); RecordProperty("DerivationTechnique", "explorative-testing"); - time_ = 0; + time_.tv_nsec = 0; } public: @@ -141,27 +130,27 @@ class MonitorIfDaemonTest : public ::testing::Test [[nodiscard]] timers::NanoSecondType mockClock() { - return time_ += kTimeStep; + return time_.tv_nsec += kTimeStep; } /// @brief Increase the time by @c count mockClock() calls timers::NanoSecondType mockClockSkip(int count) { - return time_ += (kTimeStep * count); + return time_.tv_nsec += (kTimeStep * count); } /// @brief Get the current time plus an offset smaller than the tick size [[nodiscard]] timers::NanoSecondType mockClockOffset() const { - return time_ + 50U; + return time_.tv_nsec + 50U; } /// @brief Get the time @c count mockClock() calls from now [[nodiscard]] timers::NanoSecondType mockClockFuture(int count) const { - return time_ + (kTimeStep * count); + return time_.tv_nsec + (kTimeStep * count); } }; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD index cb780aa9a..4511fb9eb 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD @@ -12,18 +12,6 @@ # ******************************************************************************* load("@rules_cc//cc:defs.bzl", "cc_library") -cc_library( - name = "process_cfg", - srcs = [], - hdrs = ["ProcessCfg.hpp"], - include_prefix = "score/mw/launch_manager/alive_monitor/details/ifexm", - strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm", - visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], - deps = [ - "//score/launch_manager/src/daemon/src/alive_monitor/details/common:types", - ], -) - cc_library( name = "process_state", srcs = ["ProcessState.cpp"], @@ -32,9 +20,7 @@ cc_library( strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm", visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ - ":process_cfg", "//score/launch_manager/src/daemon/src/alive_monitor/details/common:observer", - "//score/launch_manager/src/daemon/src/alive_monitor/details/common:types", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", "//score/launch_manager/src/daemon/src/supervision_control_client", ], @@ -49,7 +35,6 @@ cc_library( visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ ":process_state", - "//score/launch_manager/src/daemon/src/alive_monitor/details/common:types", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:time_conversion", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", "//score/launch_manager/src/daemon/src/common:log", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessCfg.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessCfg.hpp deleted file mode 100644 index 62fe5c009..000000000 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessCfg.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -#ifndef PROCESSCFG_HPP_INCLUDED -#define PROCESSCFG_HPP_INCLUDED - -#include - -#include "score/mw/launch_manager/alive_monitor/details/common/Types.hpp" -#include -#include - -namespace score -{ -namespace lcm -{ -namespace saf -{ -namespace ifexm -{ - -/* RULECHECKER_comment(0, 18, check_non_private_non_pod_field, "Process configuration is intended to be\ - data class therefore scope is set to public intentionally.", true_no_defect) */ -class ProcessCfg final -{ - public: - /// @brief Process shortname - std::string_view processShortName; - - /// @brief Process Id - common::ProcessId processId{0}; - - /// Process configuration constructor - /* RULECHECKER_comment(0, 3, check_incomplete_data_member_construction, "Member processShortName is initialized \ - using assignment instead of member initializer list.", true_no_defect) */ - ProcessCfg() - { - static_cast(0); - } -}; - -} // namespace ifexm -} // namespace saf -} // namespace lcm -} // namespace score - -#endif diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp index a04039edb..bac3a6510 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp @@ -22,42 +22,10 @@ namespace saf namespace ifexm { -ProcessState::ProcessState(const ProcessCfg& f_processCfg_r) noexcept(false) - : Observable(), - k_processShortName(f_processCfg_r.processShortName), - k_processId(f_processCfg_r.processId) +ProcessState::ProcessState(const IdentifierHash& process_id) noexcept(false) + : Observable() { - static_cast(0); -} - -std::string_view ProcessState::getConfigName() const noexcept -{ - return k_processShortName; -} - -common::ProcessId ProcessState::getProcessId() const noexcept -{ - return k_processId; -} - -score::lcm::SupervisionEventType ProcessState::getEventType() const noexcept -{ - return eventType_; -} - -void ProcessState::setEventType(score::lcm::SupervisionEventType f_eventType) noexcept -{ - eventType_ = f_eventType; -} - -timers::NanoSecondType ProcessState::getTimestamp() const noexcept -{ - return timestamp; -} - -void ProcessState::setTimestamp(timers::NanoSecondType f_timestamp) noexcept -{ - timestamp = f_timestamp; + event.id = process_id; } void ProcessState::pushData(void) noexcept diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp index 2a5cae5fc..f8643a3df 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp @@ -15,8 +15,6 @@ #define PROCESSSTATE_HPP_INCLUDED #include "score/mw/launch_manager/alive_monitor/details/common/Observer.hpp" -#include "score/mw/launch_manager/alive_monitor/details/common/Types.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessCfg.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include @@ -40,8 +38,7 @@ class ProcessState : public saf::common::Observable ProcessState() = delete; /// @brief Constructor - /// @param [in] f_processCfg_r Process configuration structure - explicit ProcessState(const ProcessCfg& f_processCfg_r) noexcept(false); + explicit ProcessState(const IdentifierHash& process_id) noexcept(false); /// @brief Default Move Constructor /* RULECHECKER_comment(0, 7, check_min_instructions, "Default constructor is not provided\ @@ -64,46 +61,12 @@ class ProcessState : public saf::common::Observable a function body", true_no_defect) */ ~ProcessState() override = default; - /// @brief Get configured process name - /// @return Returns configured process name - std::string_view getConfigName() const noexcept; - - /// @brief Get process ID - /// @return Returns process ID - common::ProcessId getProcessId(void) const noexcept; - - /// @brief Get supervision event type - /// @return Returns the current event type - score::lcm::SupervisionEventType getEventType() const noexcept; - - /// @brief Set supervision event type - /// @param [in] f_eventType Supervision event type - void setEventType(score::lcm::SupervisionEventType f_eventType) noexcept; - - /// @brief Get Timestamp for current event - /// @return Timestamp of current event - timers::NanoSecondType getTimestamp() const noexcept; - - /// @brief Set timestamp of process state - /// @param [in] f_timestamp timestamp of process state - void setTimestamp(timers::NanoSecondType f_timestamp) noexcept; + /// @brief Event to observe + SupervisionEvent event; /// @brief Push Data /// @details Push supervision event related information, which shall be distributed to observers. void pushData(void) noexcept; - - private: - /// @brief Process short name - const std::string k_processShortName; - - /// @brief Process id - const common::ProcessId k_processId; - - /// @brief Current supervision event type - score::lcm::SupervisionEventType eventType_{score::lcm::SupervisionEventType::kDeactivation}; - - /// @brief Current timestamp of process - timers::NanoSecondType timestamp{UINT64_MAX}; }; } // namespace ifexm diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp index aa049a57a..020b60b7c 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp @@ -31,7 +31,7 @@ ProcessStateReader::ProcessStateReader(std::unique_ptr::iterator processMapIterator{processStateMap.find(f_processId)}; + std::map::iterator processMapIterator{processStateMap.find(f_processId)}; // delete the pair only if process id already exists if (processMapIterator != processStateMap.end()) { @@ -104,15 +104,15 @@ bool ProcessStateReader::pushUpdateTill( const timers::NanoSecondType f_syncTimestamp) noexcept { bool isSyncTimestampReached{false}; - const common::ProcessId processId{f_event.id.data()}; - std::map::iterator processMapIterator{processStateMap.find(processId)}; + std::map::iterator processMapIterator{processStateMap.find(f_event.id)}; if (processMapIterator != processStateMap.end()) { - processMapIterator->second->setEventType(f_event.eventType); + processMapIterator->second->event.eventType = f_event.eventType; + processMapIterator->second->event.systemClockTimestamp = f_event.systemClockTimestamp; + timers::NanoSecondType changedProcessTimestamp{ timers::TimeConversion::convertToNanoSec(f_event.systemClockTimestamp)}; - processMapIterator->second->setTimestamp(changedProcessTimestamp); // If event occurred before synchronization timestamp, push data for current cycle. if (changedProcessTimestamp <= f_syncTimestamp) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp index 420854f4f..520b8cb5c 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp @@ -16,7 +16,6 @@ #include -#include "score/mw/launch_manager/alive_monitor/details/common/Types.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include "score/mw/launch_manager/supervision_control_client/isupervision_control_receiver.hpp" @@ -60,11 +59,11 @@ class ProcessStateReader /// @param [in] f_processState_r Process state to be registered /// @param [in] f_processId Process ID /// @return true (registered), false (not registered) - bool registerProcessState(ProcessState& f_processState_r, const common::ProcessId f_processId) noexcept(false); + bool registerProcessState(ProcessState& f_processState_r, const IdentifierHash f_processId) noexcept(false); /// @brief Deregister process states from reader /// @param [in] f_processId Process ID to deregister the particular process - void deregisterProcessState(const common::ProcessId f_processId) noexcept; + void deregisterProcessState(const IdentifierHash f_processId) noexcept; /// @brief Distribute changes /// @details Distribute supervision events to the registered Process State classes @@ -83,7 +82,7 @@ class ProcessStateReader std::unique_ptr processStateReceiverHM; /// @brief Map for process id and process state object - std::map processStateMap{}; + std::map processStateMap{}; /// @brief Flag for pending pushData from previous distribution of process state changes bool isPushPending{false}; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp index 753d5f1bf..2f5246dcb 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp @@ -17,9 +17,9 @@ #include #include "score/launch_manager/src/daemon/src/common/log.hpp" -#include "score/mw/launch_manager/alive_monitor/details/common/Types.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" +#include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" namespace score { @@ -78,8 +78,8 @@ void Alive::updateData(const score::lcm::saf::ifappl::Checkpoint& f_observable_r // coverity[exn_spec_violation:FALSE] std::length_error is not thrown from push() which uses fixed-size-vector void Alive::updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) { - const timers::NanoSecondType timestamp{f_observable_r.getTimestamp()}; - SupervisionEventSnapshot snapshot{timestamp, f_observable_r.getEventType()}; + const timers::NanoSecondType timestamp{timers::TimeConversion::convertToNanoSec(f_observable_r.event.systemClockTimestamp)}; + SupervisionEventSnapshot snapshot{timestamp, f_observable_r.event.eventType}; if (!timeSortingUpdateEventBuffer.push(snapshot, timestamp)) { dataLossReason = EDataLossReason::kBufferFull; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp index 77f9a2854..44d4a72b7 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp @@ -18,7 +18,6 @@ #include #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessCfg.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/Alive.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/SupervisionCfg.hpp" @@ -51,9 +50,8 @@ class MockRecoveryClient : public score::lcm::IRecoveryClient /// Owns all supporting objects so they outlive the Alive. struct AliveFixture { - static constexpr char kProcessName[] = "test_proc"; + inline static const score::lcm::IdentifierHash kProcessId {"42U"}; static constexpr char kCheckpointName[] = "test_cp"; - static constexpr score::lcm::saf::common::ProcessId kProcessId = 42U; struct Builder { @@ -99,7 +97,7 @@ struct AliveFixture std::unique_ptr alive; explicit AliveFixture(const Builder& bld) - : processState(makeProcessCfg()), checkpoint(kCheckpointName, 1U, &processState) + : processState(kProcessId), checkpoint(kCheckpointName, 1U, &processState) { score::lcm::saf::supervision::AliveSupervisionCfg cfg{checkpoint}; cfg.cfgName_p = "test_alive"; @@ -117,19 +115,19 @@ struct AliveFixture processState.attachObserver(*alive); } - /// Simulate supervision activation (process reached running state). - void activateProcess(score::lcm::saf::timers::NanoSecondType timestamp) + /// Send an activation event and notify observers. + void activateProcess(long ts) { - processState.setTimestamp(timestamp); - processState.setEventType(score::lcm::SupervisionEventType::kActivation); + processState.event.systemClockTimestamp.tv_nsec = ts; + processState.event.eventType = score::lcm::SupervisionEventType::kActivation; processState.pushData(); } - /// Simulate supervision deactivation (process terminating). - void deactivateProcess(score::lcm::saf::timers::NanoSecondType timestamp) + /// Send a deactivation event and notify observers. + void deactivateProcess(long ts) { - processState.setTimestamp(timestamp); - processState.setEventType(score::lcm::SupervisionEventType::kDeactivation); + processState.event.systemClockTimestamp.tv_nsec = ts; + processState.event.eventType = score::lcm::SupervisionEventType::kDeactivation; processState.pushData(); } @@ -138,15 +136,6 @@ struct AliveFixture { checkpoint.pushData(timestamp); } - - private: - static score::lcm::saf::ifexm::ProcessCfg makeProcessCfg() - { - score::lcm::saf::ifexm::ProcessCfg cfg{}; - cfg.processShortName = kProcessName; - cfg.processId = kProcessId; - return cfg; - } }; } // namespace diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD index d28ff611d..77f8f8393 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD @@ -20,7 +20,6 @@ cc_library( strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/supervision", visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ - "//score/launch_manager/src/daemon/src/alive_monitor/details/common:types", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", ], diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp index 67b30328d..9df520526 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp @@ -16,7 +16,6 @@ #include -#include "score/mw/launch_manager/alive_monitor/details/common/Types.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include "score/mw/launch_manager/recovery_client/irecovery_client.h" From 14cda56b21e4575f3f0d240ea1285533a90ad11e Mon Sep 17 00:00:00 2001 From: William Roebuck <244554584+WilliamRoebuck@users.noreply.github.com> Date: Mon, 10 Aug 2026 14:56:59 +0100 Subject: [PATCH 2/3] Rename ProcessState to ObservableEvent --- .../details/daemon/AliveMonitorImpl.cpp | 6 +-- .../details/daemon/AliveMonitorImpl.hpp | 4 +- .../src/alive_monitor/details/daemon/BUILD | 6 +-- .../details/daemon/PhmDaemon.cpp | 4 +- .../details/daemon/PhmDaemon.hpp | 14 +++--- .../details/daemon/SwClusterHandler.cpp | 4 +- .../details/daemon/SwClusterHandler.hpp | 8 ++-- .../src/alive_monitor/details/factory/BUILD | 4 +- .../details/factory/FlatCfgFactory.cpp | 29 ++++++------ .../details/factory/FlatCfgFactory.hpp | 14 +++--- .../details/factory/IPhmFactory.hpp | 26 +++++------ .../src/alive_monitor/details/ifappl/BUILD | 4 +- .../details/ifappl/Checkpoint.cpp | 4 +- .../details/ifappl/Checkpoint.hpp | 10 ++-- .../details/ifappl/MonitorIfDaemon.cpp | 6 +-- .../details/ifappl/MonitorIfDaemon.hpp | 10 ++-- .../details/ifappl/MonitorIfDaemon_UT.cpp | 6 +-- .../src/alive_monitor/details/ifexm/BUILD | 14 +++--- .../{ProcessState.cpp => ObservableEvent.cpp} | 7 ++- .../{ProcessState.hpp => ObservableEvent.hpp} | 24 +++++----- ...teReader.cpp => ObservableEventReader.cpp} | 26 +++++------ ...teReader.hpp => ObservableEventReader.hpp} | 46 +++++++++---------- .../details/supervision/Alive.cpp | 13 +++--- .../details/supervision/Alive.hpp | 10 ++-- .../details/supervision/Alive_UT.cpp | 9 ++-- .../alive_monitor/details/supervision/BUILD | 4 +- .../details/supervision/SupervisionCfg.hpp | 2 +- 27 files changed, 157 insertions(+), 157 deletions(-) rename score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/{ProcessState.cpp => ObservableEvent.cpp} (76%) rename score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/{ProcessState.hpp => ObservableEvent.hpp} (76%) rename score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/{ProcessStateReader.cpp => ObservableEventReader.cpp} (76%) rename score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/{ProcessStateReader.hpp => ObservableEventReader.hpp} (65%) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.cpp index 14d2ea754..57bbb4497 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.cpp @@ -29,10 +29,10 @@ namespace daemon AliveMonitorImpl::AliveMonitorImpl( SptrIRecoveryClient recovery_client, - UptrISupervisionControlReceiver process_state_receiver, + UptrISupervisionControlReceiver observable_event_receiver, const Config& config) : m_recovery_client(recovery_client), - m_process_state_receiver(std::move(process_state_receiver)), + m_observable_event_receiver(std::move(observable_event_receiver)), m_config(score::mw::lifecycle::internal::alive::aliveMonitorConfig(config)) { } @@ -44,7 +44,7 @@ EInitCode AliveMonitorImpl::init() noexcept { m_osClock.startMeasurement(); - m_daemon = std::make_unique(m_osClock, std::move(m_process_state_receiver)); + m_daemon = std::make_unique(m_osClock, std::move(m_observable_event_receiver)); initResult = m_daemon->init(m_recovery_client, m_config); if (initResult == EInitCode::kNoError) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.hpp index 152eca1fa..148fea390 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/AliveMonitorImpl.hpp @@ -45,7 +45,7 @@ class AliveMonitorImpl : public IAliveMonitor public: AliveMonitorImpl( SptrIRecoveryClient recovery_client, - UptrISupervisionControlReceiver process_state_receiver, + UptrISupervisionControlReceiver observable_event_receiver, const Config& config); EInitCode init() noexcept override; @@ -56,7 +56,7 @@ class AliveMonitorImpl : public IAliveMonitor SptrIRecoveryClient m_recovery_client{nullptr}; UptrPhmDaemon m_daemon{nullptr}; OsClock m_osClock{}; - UptrISupervisionControlReceiver m_process_state_receiver; + UptrISupervisionControlReceiver m_observable_event_receiver; AliveMonitorConfig m_config; }; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/BUILD index 41913705a..5e0180ece 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/BUILD @@ -34,8 +34,8 @@ cc_library( "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:checkpoint", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:data_structures", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:monitor_if_daemon", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state_reader", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event_reader", "//score/launch_manager/src/daemon/src/alive_monitor/details/supervision:alive", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", "//score/launch_manager/src/daemon/src/common:log", @@ -56,7 +56,7 @@ cc_library( "//score/launch_manager/src/daemon/src/alive_monitor/details/factory:flat_cfg_factory", "//score/launch_manager/src/daemon/src/alive_monitor/details/factory:static_config", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:monitor_if_daemon", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state_reader", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event_reader", "//score/launch_manager/src/daemon/src/alive_monitor/details/supervision:alive", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:cycle_time_validator", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:cycle_timer", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.cpp index 01b9a9ab9..d8ce53910 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.cpp @@ -31,11 +31,11 @@ namespace daemon true_no_defect) */ /* RULECHECKER_comment(0, 4, check_incomplete_data_member_construction, "Default constructor is used for\ processStateReader.", true_no_defect) */ -PhmDaemon::PhmDaemon(OsClock& f_osClock, std::unique_ptr f_process_state_receiver) +PhmDaemon::PhmDaemon(OsClock& f_osClock, std::unique_ptr f_observable_event_receiver) : osClock{f_osClock}, cycleTimer{&osClock}, swClusterHandlers{}, - processStateReader{std::move(f_process_state_receiver)} + processStateReader{std::move(f_observable_event_receiver)} { static_cast(f_osClock); } diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.hpp index ba3595c77..7dac6369f 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/PhmDaemon.hpp @@ -23,7 +23,7 @@ #include "score/mw/launch_manager/alive_monitor/details/daemon/PhmDaemonConfig.hpp" #include "score/mw/launch_manager/alive_monitor/details/daemon/SwClusterHandler.hpp" #include "score/mw/launch_manager/alive_monitor/details/factory/StaticConfig.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessStateReader.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEventReader.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/CycleTimeValidator.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/CycleTimer.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" @@ -59,18 +59,18 @@ class PhmDaemon using CycleTimer = score::lcm::saf::timers::CycleTimer; using CycleTimeValidator = score::lcm::saf::timers::CycleTimeValidator; using NanoSecondType = score::lcm::saf::timers::NanoSecondType; - using ProcessStateReader = score::lcm::saf::ifexm::ProcessStateReader; + using ObservableEventReader = score::lcm::saf::ifexm::ObservableEventReader; using AliveMonitorConfig = score::mw::lifecycle::internal::alive::AliveMonitorConfig; /* RULECHECKER_comment(0, 4, check_expensive_to_copy_in_parameter, "f_supervisionErrorInfo name is passed by value\ as same as generated function", true_no_defect) */ /// @brief Set the OS clock interface /// @param[in] f_osClock Access to the system clock (dependency injection possible in tests) - /// @param[in] f_process_state_receiver process state receiver implementation (dependency injection possible in - /// tests) + /// @param[in] f_observable_event_receiver observable event receiver implementation (dependency injection possible + /// in tests) /* RULECHECKER_comment(3,1, check_expensive_to_copy_in_parameter, "Move only types cannot be passed by const ref", true_no_defect) */ - PhmDaemon(OsClock& f_osClock, std::unique_ptr f_process_state_receiver); + PhmDaemon(OsClock& f_osClock, std::unique_ptr f_observable_event_receiver); /* RULECHECKER_comment(0, 4, check_min_instructions, "Default destructor is not provided\ a function body", true_no_defect) */ @@ -216,8 +216,8 @@ class PhmDaemon /// @brief Vector of SwCluster handler std::vector swClusterHandlers; - /// @brief Process State Reader for PHM daemon - ProcessStateReader processStateReader; + /// @brief Observable Event Reader for PHM daemon + ObservableEventReader processStateReader; }; } // namespace daemon diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.cpp index ac05dfa67..573de439a 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.cpp @@ -48,7 +48,7 @@ SwClusterHandler::~SwClusterHandler() = default; bool SwClusterHandler::constructWorkers( const AliveMonitorConfig& config, std::shared_ptr f_recoveryClient_r, - ifexm::ProcessStateReader& f_processStateReader_r, + ifexm::ObservableEventReader& f_processStateReader_r, const factory::SupervisionBufferConfig& f_bufferConfig_r) noexcept(false) { bool isSuccess{false}; @@ -58,7 +58,7 @@ bool SwClusterHandler::constructWorkers( if (isSuccess) { LM_LOG_DEBUG() << "Software Cluster Handler starts constructing workers:" << f_swClusterName; - isSuccess = flatCfgFactory.createProcessStates(processStates, f_processStateReader_r); + isSuccess = flatCfgFactory.createObservableEvents(processStates, f_processStateReader_r); } if (isSuccess) { diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.hpp index d492e5f9d..e41ce7fe9 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/daemon/SwClusterHandler.hpp @@ -16,8 +16,8 @@ #include "score/mw/launch_manager/alive_monitor/details/factory/StaticConfig.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/DataStructures.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessStateReader.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEventReader.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include "score/mw/launch_manager/alive_monitor/details/common/AliveMonitorConfig.hpp" @@ -97,7 +97,7 @@ class SwClusterHandler bool constructWorkers( const AliveMonitorConfig& config, std::shared_ptr f_recoveryClient_r, - ifexm::ProcessStateReader& f_processStateReader_r, + ifexm::ObservableEventReader& f_processStateReader_r, const factory::SupervisionBufferConfig& f_bufferConfig_r) noexcept(false); /// @brief Perform cyclic execution @@ -124,7 +124,7 @@ class SwClusterHandler const std::string f_swClusterName; /// Vector of Process states - std::vector processStates; + std::vector processStates; /// Vector of Alive Interface IPCs std::vector aliveIfIpcs; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD index bdd1c7244..1e27d8edf 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/BUILD @@ -48,8 +48,8 @@ cc_library( "//score/launch_manager/src/daemon/src/alive_monitor/details/factory:static_config", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:checkpoint", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:monitor_if_daemon", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state_reader", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event_reader", "//score/launch_manager/src/daemon/src/alive_monitor/details/supervision:alive", "//score/launch_manager/src/daemon/src/alive_monitor/details/supervision:supervision_cfg", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:time_conversion", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp index 6c5a58082..b2efff488 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.cpp @@ -24,7 +24,7 @@ #include "score/mw/launch_manager/alive_monitor/details/factory/StaticConfig.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/MonitorIfDaemon.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/Alive.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/SupervisionCfg.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" @@ -56,9 +56,9 @@ bool FlatCfgFactory::init(const std::vector& supervis return true; } -bool FlatCfgFactory::createProcessStates( - std::vector& f_processStates_r, - ifexm::ProcessStateReader& f_processStateReader_r) +bool FlatCfgFactory::createObservableEvents( + std::vector& f_processStates_r, + ifexm::ObservableEventReader& f_processStateReader_r) { bool isSuccess{true}; @@ -69,33 +69,34 @@ bool FlatCfgFactory::createProcessStates( { const auto id = IdentifierHash{comp.name}; f_processStates_r.emplace_back(id); - isSuccess = f_processStateReader_r.registerProcessState(f_processStates_r.back(), id); + isSuccess = f_processStateReader_r.registerObservableEvent(f_processStates_r.back(), id); if (!isSuccess) { break; } - LM_LOG_DEBUG() << "Successfully created Process States:" << comp.name; + LM_LOG_DEBUG() << "Successfully created Observable Events:" << comp.name; } } catch (const std::exception& f_exception_r) { isSuccess = false; - LM_LOG_ERROR() << "Could not create Process States due to exception:" << std::string_view{f_exception_r.what()}; + LM_LOG_ERROR() << "Could not create Observable Events due to exception:" + << std::string_view{f_exception_r.what()}; } if (isSuccess) { - LM_LOG_DEBUG() << "Number of constructed Process States:" << static_cast(f_processStates_r.size()); + LM_LOG_DEBUG() << "Number of constructed Observable Events:" << static_cast(f_processStates_r.size()); } else { for (auto& processState_r : f_processStates_r) { - f_processStateReader_r.deregisterProcessState(processState_r.event.id); + f_processStateReader_r.deregisterObservableEvent(processState_r.event.id); } f_processStates_r.clear(); - LM_LOG_ERROR() << "Could not create all necessary Process States."; + LM_LOG_ERROR() << "Could not create all necessary Observable Events."; } return isSuccess; @@ -171,7 +172,7 @@ bool FlatCfgFactory::createAliveIfIpcs(std::vector& bool FlatCfgFactory::createAliveIf( std::vector& f_interfaces_r, std::vector& f_interfaceIpcs_r, - std::vector& f_processStates_r) + std::vector& f_processStates_r) { bool isSuccess{true}; try @@ -202,7 +203,7 @@ bool FlatCfgFactory::createAliveIf( bool FlatCfgFactory::createSupervisionCheckpoints( std::vector& f_checkpoints_r, std::vector& f_interfaces_r, - std::vector& f_processStates_r) + std::vector& f_processStates_r) { bool isSuccess{true}; @@ -216,7 +217,7 @@ bool FlatCfgFactory::createSupervisionCheckpoints( const std::string checkpointCfgName = comp.name + "_checkpoint"; const uint32_t checkpointId = StaticConfig::k_DefaultCheckpointId; - const ifexm::ProcessState* process_p{&f_processStates_r.at(idx)}; + const ifexm::ObservableEvent* process_p{&f_processStates_r.at(idx)}; f_checkpoints_r.emplace_back(checkpointCfgName.c_str(), checkpointId, process_p); f_interfaces_r.at(idx).attachCheckpoint(f_checkpoints_r.back()); @@ -247,7 +248,7 @@ bool FlatCfgFactory::createSupervisionCheckpoints( bool FlatCfgFactory::createAliveSupervisions( std::vector& f_alive_r, std::vector& f_checkpoints_r, - std::vector& f_processStates_r, + std::vector& f_processStates_r, std::shared_ptr f_recoveryClient_r) { bool isSuccess{true}; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.hpp index a017153a8..eba0d5b69 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/FlatCfgFactory.hpp @@ -19,7 +19,7 @@ #include "score/mw/launch_manager/alive_monitor/details/common/AliveMonitorConfig.hpp" #include "score/mw/launch_manager/alive_monitor/details/factory/IPhmFactory.hpp" #include "score/mw/launch_manager/alive_monitor/details/factory/StaticConfig.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessStateReader.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEventReader.hpp" #include #include @@ -73,9 +73,9 @@ class FlatCfgFactory : public IPhmFactory bool init(const std::vector& supervised); /// @brief Refer to the description of the base class (IPhmFactory) - bool createProcessStates( - std::vector& f_processStates_r, - ifexm::ProcessStateReader& f_processStateReader_r) override; + bool createObservableEvents( + std::vector& f_processStates_r, + ifexm::ObservableEventReader& f_processStateReader_r) override; /// Refer to the description of the base class (IPhmFactory) bool createAliveIfIpcs(std::vector& f_interfaceIpcs_r) override; @@ -84,19 +84,19 @@ class FlatCfgFactory : public IPhmFactory bool createAliveIf( std::vector& f_interfaces_r, std::vector& f_interfaceIpcs_r, - std::vector& f_processStates_r) override; + std::vector& f_processStates_r) override; /// Refer to the description of the base class (IPhmFactory) bool createSupervisionCheckpoints( std::vector& f_checkpoints_r, std::vector& f_interfaces_r, - std::vector& f_processStates_r) override; + std::vector& f_processStates_r) override; /// Refer to the description of the base class (IPhmFactory) bool createAliveSupervisions( std::vector& f_alive_r, std::vector& f_checkpoints_r, - std::vector& f_processStates_r, + std::vector& f_processStates_r, std::shared_ptr f_recoveryClient_r) override; private: diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/IPhmFactory.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/IPhmFactory.hpp index 1954cd22d..a852a09ba 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/factory/IPhmFactory.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/factory/IPhmFactory.hpp @@ -35,8 +35,8 @@ namespace saf // Forward declarations namespace ifexm { -class ProcessState; -class ProcessStateReader; +class ObservableEvent; +class ObservableEventReader; } // namespace ifexm namespace ifappl @@ -75,13 +75,13 @@ class IPhmFactory /// @brief No Move Assignment IPhmFactory& operator=(IPhmFactory&&) = delete; - /// @brief Create Process States - /// @param [out] f_processStates_r Vector of created Process States + /// @brief Create Observable Events + /// @param [out] f_processStates_r Vector of created Observable Events /// @param [in] f_processStateReader_r Process state reader object for PHM daemon /// @return Object creation successful (true), otherwise failed (false) - virtual bool createProcessStates( - std::vector& f_processStates_r, - ifexm::ProcessStateReader& f_processStateReader_r) = 0; + virtual bool createObservableEvents( + std::vector& f_processStates_r, + ifexm::ObservableEventReader& f_processStateReader_r) = 0; /// @brief Create IPCs for Alive Interfaces /// @param [out] f_interfaceIpcs_r Vector of created Alive Interface IPCs @@ -91,34 +91,34 @@ class IPhmFactory /// @brief Create Alive Interfaces /// @param [out] f_interfaces_r Vector of created Alive Interfaces /// @param [in] f_interfaceIpcs_r Vector of Alive Interface IPCs required for interface creation. - /// @param [in,out] f_processStates_r Vector of Process States + /// @param [in,out] f_processStates_r Vector of Observable Events /// @return Object creation successful (true), otherwise failed (false) virtual bool createAliveIf( std::vector& f_interfaces_r, std::vector& f_interfaceIpcs_r, - std::vector& f_processStates_r) = 0; + std::vector& f_processStates_r) = 0; /// @brief Create Supervision Checkpoints /// @param [out] f_checkpoints_r Vector of created Supervision Checkpoints /// @param [in,out] f_interfaces_r Vector of Alive Interfaces required for attaching the checkpoints. - /// @param [in] f_processStates_r Vector of ProcessStates required for constructing the Checkpoint + /// @param [in] f_processStates_r Vector of ObservableEvents required for constructing the Checkpoint /// instances. /// @return Object creation successful (true), otherwise failed (false) virtual bool createSupervisionCheckpoints( std::vector& f_checkpoints_r, std::vector& f_interfaces_r, - std::vector& f_processStates_r) = 0; + std::vector& f_processStates_r) = 0; /// @brief Create alive supervision worker objects /// @param [out] f_alive_r Vector of created alive supervision worker /// @param [in,out] f_checkpoints_r Vector of Supervision Checkpoints - /// @param [in,out] f_processStates_r Vector of Process States + /// @param [in,out] f_processStates_r Vector of Observable Events /// @param [in] f_recoveryClient_r Recovery interface invoked when a supervision expires /// @return Object creation successful (true), otherwise failed (false) virtual bool createAliveSupervisions( std::vector& f_alive_r, std::vector& f_checkpoints_r, - std::vector& f_processStates_r, + std::vector& f_processStates_r, std::shared_ptr f_recoveryClient_r) = 0; }; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/BUILD index 485c65ce0..6417eadda 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/BUILD @@ -37,7 +37,7 @@ cc_library( visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ "//score/launch_manager/src/daemon/src/alive_monitor/details/common:observer", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", ], ) @@ -52,7 +52,7 @@ cc_library( deps = [ ":checkpoint", ":data_structures", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", ], ) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.cpp index c6104677c..5b23c3148 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.cpp @@ -25,7 +25,7 @@ namespace ifappl Checkpoint::Checkpoint( const char* const f_checkpointCfgName_p, const uint32_t f_checkpointId, - const ifexm::ProcessState* f_processState_p) noexcept(false) + const ifexm::ObservableEvent* f_processState_p) noexcept(false) : Observable(), k_configName(f_checkpointCfgName_p), k_checkpointId(f_checkpointId), @@ -74,7 +74,7 @@ std::string_view Checkpoint::getConfigName(void) const noexcept(true) return k_configName; } -const ifexm::ProcessState* Checkpoint::getProcess(void) const noexcept(true) +const ifexm::ObservableEvent* Checkpoint::getProcess(void) const noexcept(true) { return processState; } diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.hpp index 024f28471..38f509d49 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/Checkpoint.hpp @@ -20,7 +20,7 @@ #include #include "score/mw/launch_manager/alive_monitor/details/common/Observer.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" namespace score @@ -57,7 +57,7 @@ class Checkpoint : public saf::common::Observable Checkpoint( const char* const f_checkpointCfgName_p, const uint32_t f_checkpointId, - const ifexm::ProcessState* f_processState_p) noexcept(false); + const ifexm::ObservableEvent* f_processState_p) noexcept(false); /// @brief Default Move Constructor /// Cannot be noexcept, since the base class move constructor is not noexcept @@ -99,8 +99,8 @@ class Checkpoint : public saf::common::Observable std::string_view getConfigName(void) const noexcept(true); /// @brief Return the process that is reporting this checkpoint - /// @return process state - const ifexm::ProcessState* getProcess(void) const noexcept(true); + /// @return observable event + const ifexm::ObservableEvent* getProcess(void) const noexcept(true); private: /// @brief Name of the corresponding configured SupervisionCheckpoint @@ -110,7 +110,7 @@ class Checkpoint : public saf::common::Observable const uint32_t k_checkpointId; /// @brief The process that is reporting this checkpoint - const ifexm::ProcessState* processState; + const ifexm::ObservableEvent* processState; /// @brief Data loss event marker bool isDataLossEvent; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp index 5d87f9f04..803e18428 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.cpp @@ -16,7 +16,7 @@ #include #include "score/launch_manager/src/daemon/src/common/log.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" namespace score { @@ -28,7 +28,7 @@ namespace ifappl { MonitorIfDaemon::MonitorIfDaemon(CheckpointIpcServer& f_ipcServer_r, const char* f_interfaceName_p) - : Observer(), k_interfaceName(f_interfaceName_p), ipcserver_r(f_ipcServer_r) + : Observer(), k_interfaceName(f_interfaceName_p), ipcserver_r(f_ipcServer_r) { } @@ -42,7 +42,7 @@ void MonitorIfDaemon::attachCheckpoint(Checkpoint& f_checkpoint_r) noexcept(fals checkpointObservers.push_back(&f_checkpoint_r); } -void MonitorIfDaemon::updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) +void MonitorIfDaemon::updateData(const ifexm::ObservableEvent& f_observable_r) noexcept(true) { switch (f_observable_r.event.eventType) { diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.hpp index a46d976b5..304efbca2 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon.hpp @@ -28,7 +28,7 @@ namespace saf { namespace ifexm { -class ProcessState; +class ObservableEvent; } namespace supervision { @@ -42,7 +42,7 @@ namespace ifappl /// @brief Alive Interface for PHM Deamon /// @details The MonitorIfDaemon class provides methods to write/read information to the /// data exchange between PHM daemon and Application, which are only required on PHM Daemon side. -class MonitorIfDaemon : public common::Observer +class MonitorIfDaemon : public common::Observer { public: /// @brief No Default Constructor @@ -88,9 +88,9 @@ class MonitorIfDaemon : public common::Observer /// @throws std::bad_alloc in case of insufficient memory for vector allocation void attachCheckpoint(Checkpoint& f_checkpoint_r) noexcept(false); - /// @brief Update data received from ProcessState - /// @param [in] f_observable_r ProcessState object which has send the update - void updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) override; + /// @brief Update data received from ObservableEvent + /// @param [in] f_observable_r ObservableEvent object which has send the update + void updateData(const ifexm::ObservableEvent& f_observable_r) noexcept(true) override; /// @brief Check for new data /// @details Check Alive interface for new data from application side diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp index bfe258a1d..be3517482 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifappl/MonitorIfDaemon_UT.cpp @@ -20,7 +20,7 @@ #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/DataStructures.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/MonitorIfDaemon.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" using namespace testing; @@ -49,10 +49,10 @@ struct MonitorIfDaemonFixture { static constexpr std::string_view kCheckpointName = "test_cp"; static constexpr uint32_t kCheckpointId = 1U; - inline static const IdentifierHash kProcessId {"test_proc"}; + inline static const IdentifierHash kProcessId{"test_proc"}; static constexpr std::string_view kInterfaceName = "test_interface"; - ifexm::ProcessState processState; + ifexm::ObservableEvent processState; ifappl::Checkpoint checkpoint; ifappl::CheckpointIpcServer ipcServer; ifappl::MonitorIfDaemon monitor; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD index 4511fb9eb..e8cdc0c30 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/BUILD @@ -13,9 +13,9 @@ load("@rules_cc//cc:defs.bzl", "cc_library") cc_library( - name = "process_state", - srcs = ["ProcessState.cpp"], - hdrs = ["ProcessState.hpp"], + name = "observable_event", + srcs = ["ObservableEvent.cpp"], + hdrs = ["ObservableEvent.hpp"], include_prefix = "score/mw/launch_manager/alive_monitor/details/ifexm", strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm", visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], @@ -27,14 +27,14 @@ cc_library( ) cc_library( - name = "process_state_reader", - srcs = ["ProcessStateReader.cpp"], - hdrs = ["ProcessStateReader.hpp"], + name = "observable_event_reader", + srcs = ["ObservableEventReader.cpp"], + hdrs = ["ObservableEventReader.hpp"], include_prefix = "score/mw/launch_manager/alive_monitor/details/ifexm", strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm", visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ - ":process_state", + ":observable_event", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:time_conversion", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", "//score/launch_manager/src/daemon/src/common:log", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.cpp similarity index 76% rename from score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp rename to score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.cpp index bac3a6510..e34727c36 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.cpp @@ -11,7 +11,7 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" namespace score { @@ -22,13 +22,12 @@ namespace saf namespace ifexm { -ProcessState::ProcessState(const IdentifierHash& process_id) noexcept(false) - : Observable() +ObservableEvent::ObservableEvent(const IdentifierHash& process_id) noexcept(false) : Observable() { event.id = process_id; } -void ProcessState::pushData(void) noexcept +void ObservableEvent::pushData(void) noexcept { pushResultToObservers(); } diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.hpp similarity index 76% rename from score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp rename to score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.hpp index f8643a3df..57ef80119 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessState.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEvent.hpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#ifndef PROCESSSTATE_HPP_INCLUDED -#define PROCESSSTATE_HPP_INCLUDED +#ifndef OBSERVABLEEVENT_HPP_INCLUDED +#define OBSERVABLEEVENT_HPP_INCLUDED #include "score/mw/launch_manager/alive_monitor/details/common/Observer.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" @@ -29,16 +29,16 @@ namespace saf namespace ifexm { -/// @brief Process State -/// @details The Process State class dispatches supervision events to the attached observers. -class ProcessState : public saf::common::Observable +/// @brief Observable Event +/// @details The Observable Event class dispatches supervision events to the attached observers. +class ObservableEvent : public saf::common::Observable { public: /// @brief No Default Constructor. - ProcessState() = delete; + ObservableEvent() = delete; /// @brief Constructor - explicit ProcessState(const IdentifierHash& process_id) noexcept(false); + explicit ObservableEvent(const IdentifierHash& process_id) noexcept(false); /// @brief Default Move Constructor /* RULECHECKER_comment(0, 7, check_min_instructions, "Default constructor is not provided\ @@ -47,19 +47,19 @@ class ProcessState : public saf::common::Observable the member initializer", false) */ /* RULECHECKER_comment(0, 3, check_copy_in_move_constructor, "The default move constructor invokes parameterised\ constructor internally. This invokes std::string copy construction", true_no_defect) */ - ProcessState(ProcessState&&) = default; + ObservableEvent(ObservableEvent&&) = default; /// @brief No Copy Constructor - ProcessState(const ProcessState&) = delete; + ObservableEvent(const ObservableEvent&) = delete; /// @brief No Copy Assignment - ProcessState& operator=(const ProcessState&) = delete; + ObservableEvent& operator=(const ObservableEvent&) = delete; /// @brief No Move Assignment - ProcessState& operator=(ProcessState&&) = delete; + ObservableEvent& operator=(ObservableEvent&&) = delete; /// @brief Default Destructor /* RULECHECKER_comment(0, 5, check_min_instructions, "Default destructor is not provided\ a function body", true_no_defect) */ - ~ProcessState() override = default; + ~ObservableEvent() override = default; /// @brief Event to observe SupervisionEvent event; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp similarity index 76% rename from score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp rename to score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp index 020b60b7c..5c94fde84 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessStateReader.hpp" #include "score/launch_manager/src/daemon/src/common/log.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEventReader.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" namespace score @@ -24,13 +24,13 @@ namespace saf namespace ifexm { -ProcessStateReader::ProcessStateReader(std::unique_ptr f_process_state_receiver) - : processStateReceiverHM(std::move(f_process_state_receiver)) +ObservableEventReader::ObservableEventReader(std::unique_ptr f_observable_event_receiver) + : processStateReceiverHM(std::move(f_observable_event_receiver)) { } -bool ProcessStateReader::registerProcessState( - ProcessState& f_processState_r, +bool ObservableEventReader::registerObservableEvent( + ObservableEvent& f_processState_r, const IdentifierHash f_processId) noexcept(false) { bool flagSuccess{false}; @@ -41,15 +41,15 @@ bool ProcessStateReader::registerProcessState( if (!flagSuccess) { - LM_LOG_ERROR() << "Process State Reader did not register" << f_processState_r.event.id; + LM_LOG_ERROR() << "Observable Event Reader did not register" << f_processState_r.event.id; } return flagSuccess; } -void ProcessStateReader::deregisterProcessState(const IdentifierHash f_processId) noexcept +void ObservableEventReader::deregisterObservableEvent(const IdentifierHash f_processId) noexcept { - std::map::iterator processMapIterator{processStateMap.find(f_processId)}; + std::map::iterator processMapIterator{processStateMap.find(f_processId)}; // delete the pair only if process id already exists if (processMapIterator != processStateMap.end()) { @@ -57,9 +57,9 @@ void ProcessStateReader::deregisterProcessState(const IdentifierHash f_processId } } -bool ProcessStateReader::distributeChanges(const timers::NanoSecondType f_syncTimestamp) noexcept +bool ObservableEventReader::distributeChanges(const timers::NanoSecondType f_syncTimestamp) noexcept { - // If push update is pending from previous cycle, push data for last change process state. + // If push update is pending from previous cycle, push data for last change observable event. if (isPushPending) { lastChangedProcess_p->pushData(); @@ -90,7 +90,7 @@ bool ProcessStateReader::distributeChanges(const timers::NanoSecondType f_syncTi } else { - LM_LOG_DEBUG() << "Process State Reader failed with error:" << resultEvent.error().Message(); + LM_LOG_DEBUG() << "Observable Event Reader failed with error:" << resultEvent.error().Message(); flagContinue = false; flagSuccess = false; } @@ -99,13 +99,13 @@ bool ProcessStateReader::distributeChanges(const timers::NanoSecondType f_syncTi return flagSuccess; } -bool ProcessStateReader::pushUpdateTill( +bool ObservableEventReader::pushUpdateTill( const LcmSupervisionEvent& f_event, const timers::NanoSecondType f_syncTimestamp) noexcept { bool isSyncTimestampReached{false}; - std::map::iterator processMapIterator{processStateMap.find(f_event.id)}; + std::map::iterator processMapIterator{processStateMap.find(f_event.id)}; if (processMapIterator != processStateMap.end()) { processMapIterator->second->event.eventType = f_event.eventType; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.hpp similarity index 65% rename from score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp rename to score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.hpp index 520b8cb5c..3358c487c 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ProcessStateReader.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.hpp @@ -11,12 +11,12 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#ifndef PROCESSSTATEREADER_HPP_INCLUDED -#define PROCESSSTATEREADER_HPP_INCLUDED +#ifndef OBSERVABLEEVENTREADER_HPP_INCLUDED +#define OBSERVABLEEVENTREADER_HPP_INCLUDED #include -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include "score/mw/launch_manager/supervision_control_client/isupervision_control_receiver.hpp" #include "score/mw/launch_manager/supervision_control_client/supervision_event.hpp" @@ -30,43 +30,43 @@ namespace saf namespace ifexm { -/// @brief Process State reader -/// @details The Process State reader fetches supervision events via the lcm library and distributes -/// the information to the Process State classes. -class ProcessStateReader +/// @brief Observable Event reader +/// @details The Observable Event reader fetches supervision events via the lcm library and distributes +/// the information to the Observable Event classes. +class ObservableEventReader { public: using LcmSupervisionEvent = score::lcm::SupervisionEvent; using LcmSupervisionControlReceiver = score::lcm::ISupervisionControlReceiver; /// @brief Constructor - /// @param [in] f_process_state_receiver Process state receiver implementation - ProcessStateReader(std::unique_ptr f_process_state_receiver); + /// @param [in] f_observable_event_receiver Process state receiver implementation + ObservableEventReader(std::unique_ptr f_observable_event_receiver); /// @brief No Copy Constructor - ProcessStateReader(const ProcessStateReader&) = delete; + ObservableEventReader(const ObservableEventReader&) = delete; /// @brief No Move Constructor - ProcessStateReader(ProcessStateReader&&) = delete; + ObservableEventReader(ObservableEventReader&&) = delete; /// @brief No Copy Assignment - ProcessStateReader& operator=(const ProcessStateReader&) = delete; + ObservableEventReader& operator=(const ObservableEventReader&) = delete; /// @brief No Move Assignment - ProcessStateReader& operator=(ProcessStateReader&&) = delete; + ObservableEventReader& operator=(ObservableEventReader&&) = delete; /// @brief Default Destructor - virtual ~ProcessStateReader() = default; + virtual ~ObservableEventReader() = default; - /// @brief Register process states for reader + /// @brief Register observable events for reader /// @param [in] f_processState_r Process state to be registered /// @param [in] f_processId Process ID /// @return true (registered), false (not registered) - bool registerProcessState(ProcessState& f_processState_r, const IdentifierHash f_processId) noexcept(false); + bool registerObservableEvent(ObservableEvent& f_processState_r, const IdentifierHash f_processId) noexcept(false); - /// @brief Deregister process states from reader + /// @brief Deregister observable events from reader /// @param [in] f_processId Process ID to deregister the particular process - void deregisterProcessState(const IdentifierHash f_processId) noexcept; + void deregisterObservableEvent(const IdentifierHash f_processId) noexcept; /// @brief Distribute changes - /// @details Distribute supervision events to the registered Process State classes + /// @details Distribute supervision events to the registered Observable Event classes /// @param [in] f_syncTimestamp Timestamp for cyclic synchronization /// @return true (successful distribution), false (failed distribution) bool distributeChanges(const timers::NanoSecondType f_syncTimestamp) noexcept; @@ -81,14 +81,14 @@ class ProcessStateReader /// @brief Process state receiver for HM thread std::unique_ptr processStateReceiverHM; - /// @brief Map for process id and process state object - std::map processStateMap{}; + /// @brief Map for process id and observable event object + std::map processStateMap{}; - /// @brief Flag for pending pushData from previous distribution of process state changes + /// @brief Flag for pending pushData from previous distribution of observable event changes bool isPushPending{false}; /// @brief Pointer for last changed process for which push update is pending - ProcessState* lastChangedProcess_p{nullptr}; + ObservableEvent* lastChangedProcess_p{nullptr}; }; } // namespace ifexm diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp index 2f5246dcb..ad9f4fa2f 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.cpp @@ -17,9 +17,9 @@ #include #include "score/launch_manager/src/daemon/src/common/log.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" -#include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" +#include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" namespace score { @@ -76,9 +76,10 @@ void Alive::updateData(const score::lcm::saf::ifappl::Checkpoint& f_observable_r } // coverity[exn_spec_violation:FALSE] std::length_error is not thrown from push() which uses fixed-size-vector -void Alive::updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) +void Alive::updateData(const ifexm::ObservableEvent& f_observable_r) noexcept(true) { - const timers::NanoSecondType timestamp{timers::TimeConversion::convertToNanoSec(f_observable_r.event.systemClockTimestamp)}; + const timers::NanoSecondType timestamp{ + timers::TimeConversion::convertToNanoSec(f_observable_r.event.systemClockTimestamp)}; SupervisionEventSnapshot snapshot{timestamp, f_observable_r.event.eventType}; if (!timeSortingUpdateEventBuffer.push(snapshot, timestamp)) { @@ -215,7 +216,7 @@ bool Alive::detectEvaluationEvent( return false; } - // Case 1: Evaluation event exists: If referenceCycleEnd exists before current checkpoint event or process state + // Case 1: Evaluation event exists: If referenceCycleEnd exists before current checkpoint event or observable event // event, trigger evaluation event for assessing alive checkpoints // Hint 1: If there are multiple reference cycles within single daemon cycle, referenceCycleEnd must increase @@ -244,7 +245,7 @@ bool Alive::detectEvaluationEvent( } // Case 2: Evaluation event does not exist: If referenceCycleEnd exists after current checkpoint event or - // process state event, consider current event for activation/deactivation/counting in next steps. Do not + // observable event event, consider current event for activation/deactivation/counting in next steps. Do not // trigger evaluation event for this case. else diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.hpp index 790c13358..9d364b1f8 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive.hpp @@ -20,7 +20,7 @@ #include "score/mw/launch_manager/alive_monitor/details/common/Observer.hpp" #include "score/mw/launch_manager/alive_monitor/details/common/TimeSortingBuffer.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/ISupervision.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/SupervisionCfg.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" @@ -54,7 +54,7 @@ namespace supervision class Alive : public ISupervision, public saf::common::Observable, public saf::common::Observer, - public saf::common::Observer + public saf::common::Observer { public: /// @brief No Default Constructor @@ -103,11 +103,11 @@ class Alive : public ISupervision, /// @param [in] f_observable_r Checkpoint object which has sent the update void updateData(const ifappl::Checkpoint& f_observable_r) noexcept(true) override; - /// @brief Update data received for process states - /// @details Activation event or deactivation event is inserted into buffer if process state and process group + /// @brief Update data received for observable events + /// @details Activation event or deactivation event is inserted into buffer if observable event and process group /// state changed. /// @param [in] f_observable_r Process state object which has sent the update - void updateData(const ifexm::ProcessState& f_observable_r) noexcept(true) override; + void updateData(const ifexm::ObservableEvent& f_observable_r) noexcept(true) override; /// @copydoc ISupervision::evaluate() void evaluate(const timers::NanoSecondType f_syncTimestamp) override; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp index 44d4a72b7..6ba564b04 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/Alive_UT.cpp @@ -18,7 +18,7 @@ #include #include "score/mw/launch_manager/alive_monitor/details/ifappl/Checkpoint.hpp" -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/Alive.hpp" #include "score/mw/launch_manager/alive_monitor/details/supervision/SupervisionCfg.hpp" #include "score/mw/launch_manager/common/identifier_hash.hpp" @@ -50,7 +50,7 @@ class MockRecoveryClient : public score::lcm::IRecoveryClient /// Owns all supporting objects so they outlive the Alive. struct AliveFixture { - inline static const score::lcm::IdentifierHash kProcessId {"42U"}; + inline static const score::lcm::IdentifierHash kProcessId{"42U"}; static constexpr char kCheckpointName[] = "test_cp"; struct Builder @@ -91,13 +91,12 @@ struct AliveFixture std::shared_ptr mockClient = std::make_shared(); - score::lcm::saf::ifexm::ProcessState processState; + score::lcm::saf::ifexm::ObservableEvent processState; score::lcm::saf::ifappl::Checkpoint checkpoint; std::unique_ptr alive; - explicit AliveFixture(const Builder& bld) - : processState(kProcessId), checkpoint(kCheckpointName, 1U, &processState) + explicit AliveFixture(const Builder& bld) : processState(kProcessId), checkpoint(kCheckpointName, 1U, &processState) { score::lcm::saf::supervision::AliveSupervisionCfg cfg{checkpoint}; cfg.cfgName_p = "test_alive"; diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD index 77f8f8393..2822a105e 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/BUILD @@ -20,7 +20,7 @@ cc_library( strip_include_prefix = "/score/launch_manager/src/daemon/src/alive_monitor/details/supervision", visibility = ["//score/launch_manager/src/daemon/src/alive_monitor:__subpackages__"], deps = [ - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", ], ) @@ -49,7 +49,7 @@ cc_library( ":supervision_cfg", "//score/launch_manager/src/daemon/src/alive_monitor/details/common:time_sorting_buffer", "//score/launch_manager/src/daemon/src/alive_monitor/details/ifappl:checkpoint", - "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:process_state", + "//score/launch_manager/src/daemon/src/alive_monitor/details/ifexm:observable_event", "//score/launch_manager/src/daemon/src/alive_monitor/details/timers:timers_os_clock", "//score/launch_manager/src/daemon/src/common:log", "//score/launch_manager/src/daemon/src/recovery_client", diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp index 9df520526..8a62c81f5 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/supervision/SupervisionCfg.hpp @@ -16,7 +16,7 @@ #include -#include "score/mw/launch_manager/alive_monitor/details/ifexm/ProcessState.hpp" +#include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEvent.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/Timers_OsClock.hpp" #include "score/mw/launch_manager/recovery_client/irecovery_client.h" From c000d40969e853140fa13c864e0db11475463a5a Mon Sep 17 00:00:00 2001 From: William Roebuck <244554584+WilliamRoebuck@users.noreply.github.com> Date: Tue, 11 Aug 2026 14:18:46 +0100 Subject: [PATCH 3/3] Formatting --- .../src/alive_monitor/details/ifexm/ObservableEventReader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp index 5c94fde84..857ed831c 100644 --- a/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp +++ b/score/launch_manager/src/daemon/src/alive_monitor/details/ifexm/ObservableEventReader.cpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/launch_manager/src/daemon/src/common/log.hpp" #include "score/mw/launch_manager/alive_monitor/details/ifexm/ObservableEventReader.hpp" +#include "score/launch_manager/src/daemon/src/common/log.hpp" #include "score/mw/launch_manager/alive_monitor/details/timers/TimeConversion.hpp" namespace score