| #include "LeakEvents.hpp" | 
 |  | 
 | #include "LeakGPIODetector.hpp" | 
 |  | 
 | #include <phosphor-logging/commit.hpp> | 
 | #include <phosphor-logging/lg2.hpp> | 
 | #include <sdbusplus/async.hpp> | 
 | #include <sdbusplus/message/native_types.hpp> | 
 | #include <xyz/openbmc_project/State/Leak/Detector/event.hpp> | 
 |  | 
 | #include <tuple> | 
 |  | 
 | PHOSPHOR_LOG2_USING; | 
 |  | 
 | namespace leak | 
 | { | 
 |  | 
 | auto Events::generateLeakEvent(sdbusplus::message::object_path detectorPath, | 
 |                                DetectorStateIntf::DetectorState state, | 
 |                                config::DetectorLevel level) | 
 |     -> sdbusplus::async::task<> | 
 | { | 
 |     auto eventName = std::make_tuple(detectorPath.str, level); | 
 |  | 
 |     // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.Branch) | 
 |     if (state == DetectorStateIntf::DetectorState::Normal) | 
 |     { | 
 |         auto pendingEvent = pendingEvents.find(eventName); | 
 |         if (pendingEvent != pendingEvents.end()) | 
 |         { | 
 |             co_await lg2::resolve(ctx, pendingEvent->second); | 
 |  | 
 |             using DetectorNormal = sdbusplus::event::xyz::openbmc_project:: | 
 |                 state::leak::Detector::LeakDetectedNormal; | 
 |             co_await lg2::commit(ctx, | 
 |                                  DetectorNormal("DETECTOR_NAME", detectorPath)); | 
 |  | 
 |             pendingEvents.erase(eventName); | 
 |         } | 
 |         co_return; | 
 |     } | 
 |  | 
 |     namespace error_intf = | 
 |         sdbusplus::error::xyz::openbmc_project::state::leak::Detector; | 
 |     sdbusplus::message::object_path eventPath{}; | 
 |  | 
 |     if (level == config::DetectorLevel::critical) | 
 |     { | 
 |         eventPath = co_await lg2::commit( | 
 |             ctx, | 
 |             error_intf::LeakDetectedCritical("DETECTOR_NAME", detectorPath)); | 
 |         error("Critical leak detected for {PATH}", "PATH", detectorPath); | 
 |     } | 
 |     else | 
 |     { | 
 |         eventPath = co_await lg2::commit( | 
 |             ctx, | 
 |             error_intf::LeakDetectedWarning("DETECTOR_NAME", detectorPath)); | 
 |         warning("Warning leak detected for {PATH}", "PATH", detectorPath); | 
 |     } | 
 |     pendingEvents[eventName] = eventPath; | 
 | } | 
 |  | 
 | } // namespace leak |