1*7184805aSJagpal Singh Gill #include "events.hpp"
2*7184805aSJagpal Singh Gill
3*7184805aSJagpal Singh Gill #include <phosphor-logging/commit.hpp>
4*7184805aSJagpal Singh Gill #include <phosphor-logging/lg2.hpp>
5*7184805aSJagpal Singh Gill #include <sdbusplus/async.hpp>
6*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/Sensor/Threshold/event.hpp>
7*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/Sensor/event.hpp>
8*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/Fan/event.hpp>
9*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/Filter/event.hpp>
10*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/Leak/Detector/event.hpp>
11*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/Power/event.hpp>
12*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/Pump/event.hpp>
13*7184805aSJagpal Singh Gill #include <xyz/openbmc_project/State/SMC/event.hpp>
14*7184805aSJagpal Singh Gill
15*7184805aSJagpal Singh Gill namespace phosphor::modbus::events
16*7184805aSJagpal Singh Gill {
17*7184805aSJagpal Singh Gill
18*7184805aSJagpal Singh Gill PHOSPHOR_LOG2_USING;
19*7184805aSJagpal Singh Gill
20*7184805aSJagpal Singh Gill const std::unordered_map<EventLevel, std::string> eventLevelToName = {
21*7184805aSJagpal Singh Gill {EventLevel::critical, "Critical"},
22*7184805aSJagpal Singh Gill {EventLevel::warning, "Warning"},
23*7184805aSJagpal Singh Gill };
24*7184805aSJagpal Singh Gill
generateSensorReadingEvent(sdbusplus::message::object_path objectPath,EventLevel level,double value,SensorValueIntf::Unit unit,bool asserted)25*7184805aSJagpal Singh Gill auto Events::generateSensorReadingEvent(
26*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, EventLevel level, double value,
27*7184805aSJagpal Singh Gill SensorValueIntf::Unit unit, bool asserted) -> sdbusplus::async::task<>
28*7184805aSJagpal Singh Gill {
29*7184805aSJagpal Singh Gill namespace error_intf =
30*7184805aSJagpal Singh Gill sdbusplus::error::xyz::openbmc_project::sensor::Threshold;
31*7184805aSJagpal Singh Gill namespace event_intf =
32*7184805aSJagpal Singh Gill sdbusplus::event::xyz::openbmc_project::sensor::Threshold;
33*7184805aSJagpal Singh Gill
34*7184805aSJagpal Singh Gill auto eventName =
35*7184805aSJagpal Singh Gill objectPath.str + ".threshold." + eventLevelToName.at(level);
36*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
37*7184805aSJagpal Singh Gill
38*7184805aSJagpal Singh Gill if (asserted)
39*7184805aSJagpal Singh Gill {
40*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
41*7184805aSJagpal Singh Gill {
42*7184805aSJagpal Singh Gill sdbusplus::message::object_path eventPath{};
43*7184805aSJagpal Singh Gill if (level == EventLevel::critical)
44*7184805aSJagpal Singh Gill {
45*7184805aSJagpal Singh Gill eventPath = co_await lg2::commit(
46*7184805aSJagpal Singh Gill ctx, error_intf::ReadingCritical("SENSOR_NAME", objectPath,
47*7184805aSJagpal Singh Gill "READING_VALUE", value,
48*7184805aSJagpal Singh Gill "UNITS", unit));
49*7184805aSJagpal Singh Gill }
50*7184805aSJagpal Singh Gill else
51*7184805aSJagpal Singh Gill {
52*7184805aSJagpal Singh Gill eventPath = co_await lg2::commit(
53*7184805aSJagpal Singh Gill ctx, error_intf::ReadingWarning("SENSOR_NAME", objectPath,
54*7184805aSJagpal Singh Gill "READING_VALUE", value,
55*7184805aSJagpal Singh Gill "UNITS", unit));
56*7184805aSJagpal Singh Gill }
57*7184805aSJagpal Singh Gill
58*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
59*7184805aSJagpal Singh Gill }
60*7184805aSJagpal Singh Gill }
61*7184805aSJagpal Singh Gill else
62*7184805aSJagpal Singh Gill {
63*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
64*7184805aSJagpal Singh Gill {
65*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
66*7184805aSJagpal Singh Gill
67*7184805aSJagpal Singh Gill co_await lg2::commit(ctx,
68*7184805aSJagpal Singh Gill event_intf::SensorReadingNormalRange(
69*7184805aSJagpal Singh Gill "SENSOR_NAME", objectPath, "READING_VALUE",
70*7184805aSJagpal Singh Gill value, "UNITS", unit));
71*7184805aSJagpal Singh Gill
72*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
73*7184805aSJagpal Singh Gill }
74*7184805aSJagpal Singh Gill }
75*7184805aSJagpal Singh Gill
76*7184805aSJagpal Singh Gill debug("Sensor reading event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
77*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
78*7184805aSJagpal Singh Gill }
79*7184805aSJagpal Singh Gill
generateSensorFailureEvent(sdbusplus::message::object_path objectPath,bool asserted)80*7184805aSJagpal Singh Gill auto Events::generateSensorFailureEvent(
81*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, bool asserted)
82*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>
83*7184805aSJagpal Singh Gill {
84*7184805aSJagpal Singh Gill namespace error_intf = sdbusplus::error::xyz::openbmc_project::Sensor;
85*7184805aSJagpal Singh Gill namespace event_intf = sdbusplus::event::xyz::openbmc_project::Sensor;
86*7184805aSJagpal Singh Gill
87*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".SensorFailure";
88*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
89*7184805aSJagpal Singh Gill
90*7184805aSJagpal Singh Gill if (asserted)
91*7184805aSJagpal Singh Gill {
92*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
93*7184805aSJagpal Singh Gill {
94*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
95*7184805aSJagpal Singh Gill ctx, error_intf::SensorFailure("SENSOR_NAME", objectPath));
96*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
97*7184805aSJagpal Singh Gill }
98*7184805aSJagpal Singh Gill }
99*7184805aSJagpal Singh Gill else
100*7184805aSJagpal Singh Gill {
101*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
102*7184805aSJagpal Singh Gill {
103*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
104*7184805aSJagpal Singh Gill
105*7184805aSJagpal Singh Gill co_await lg2::commit(
106*7184805aSJagpal Singh Gill ctx, event_intf::SensorRestored("SENSOR_NAME", objectPath));
107*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
108*7184805aSJagpal Singh Gill }
109*7184805aSJagpal Singh Gill }
110*7184805aSJagpal Singh Gill
111*7184805aSJagpal Singh Gill debug("Sensor failure event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
112*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
113*7184805aSJagpal Singh Gill }
114*7184805aSJagpal Singh Gill
generateControllerFailureEvent(sdbusplus::message::object_path objectPath,std::string additionalInfo,bool asserted)115*7184805aSJagpal Singh Gill auto Events::generateControllerFailureEvent(
116*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, std::string additionalInfo,
117*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>
118*7184805aSJagpal Singh Gill {
119*7184805aSJagpal Singh Gill namespace error_intf = sdbusplus::error::xyz::openbmc_project::state::SMC;
120*7184805aSJagpal Singh Gill namespace event_intf = sdbusplus::event::xyz::openbmc_project::state::SMC;
121*7184805aSJagpal Singh Gill
122*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".ControllerFailure." + additionalInfo;
123*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
124*7184805aSJagpal Singh Gill
125*7184805aSJagpal Singh Gill if (asserted)
126*7184805aSJagpal Singh Gill {
127*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
128*7184805aSJagpal Singh Gill {
129*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
130*7184805aSJagpal Singh Gill ctx, error_intf::SMCFailed("IDENTIFIER", objectPath,
131*7184805aSJagpal Singh Gill "FAILURE_TYPE", additionalInfo));
132*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
133*7184805aSJagpal Singh Gill }
134*7184805aSJagpal Singh Gill }
135*7184805aSJagpal Singh Gill else
136*7184805aSJagpal Singh Gill {
137*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
138*7184805aSJagpal Singh Gill {
139*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
140*7184805aSJagpal Singh Gill
141*7184805aSJagpal Singh Gill co_await lg2::commit(
142*7184805aSJagpal Singh Gill ctx, event_intf::SMCRestored("IDENTIFIER", objectPath));
143*7184805aSJagpal Singh Gill
144*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
145*7184805aSJagpal Singh Gill }
146*7184805aSJagpal Singh Gill }
147*7184805aSJagpal Singh Gill
148*7184805aSJagpal Singh Gill debug("Controller failure event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
149*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
150*7184805aSJagpal Singh Gill }
151*7184805aSJagpal Singh Gill
generatePowerFaultEvent(sdbusplus::message::object_path objectPath,std::string additionalInfo,bool asserted)152*7184805aSJagpal Singh Gill auto Events::generatePowerFaultEvent(sdbusplus::message::object_path objectPath,
153*7184805aSJagpal Singh Gill std::string additionalInfo, bool asserted)
154*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>
155*7184805aSJagpal Singh Gill {
156*7184805aSJagpal Singh Gill namespace error_intf = sdbusplus::error::xyz::openbmc_project::state::Power;
157*7184805aSJagpal Singh Gill namespace event_intf = sdbusplus::event::xyz::openbmc_project::state::Power;
158*7184805aSJagpal Singh Gill
159*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".PowerFailure." + additionalInfo;
160*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
161*7184805aSJagpal Singh Gill
162*7184805aSJagpal Singh Gill if (asserted)
163*7184805aSJagpal Singh Gill {
164*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
165*7184805aSJagpal Singh Gill {
166*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
167*7184805aSJagpal Singh Gill ctx,
168*7184805aSJagpal Singh Gill error_intf::PowerRailFault("POWER_RAIL", objectPath,
169*7184805aSJagpal Singh Gill "FAILURE_DATA", additionalInfo));
170*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
171*7184805aSJagpal Singh Gill }
172*7184805aSJagpal Singh Gill }
173*7184805aSJagpal Singh Gill else
174*7184805aSJagpal Singh Gill {
175*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
176*7184805aSJagpal Singh Gill {
177*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
178*7184805aSJagpal Singh Gill
179*7184805aSJagpal Singh Gill co_await lg2::commit(ctx, event_intf::PowerRailFaultRecovered(
180*7184805aSJagpal Singh Gill "POWER_RAIL", objectPath));
181*7184805aSJagpal Singh Gill
182*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
183*7184805aSJagpal Singh Gill }
184*7184805aSJagpal Singh Gill }
185*7184805aSJagpal Singh Gill
186*7184805aSJagpal Singh Gill debug("Power fault event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
187*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
188*7184805aSJagpal Singh Gill }
189*7184805aSJagpal Singh Gill
generateFilterFailureEvent(sdbusplus::message::object_path objectPath,bool asserted)190*7184805aSJagpal Singh Gill auto Events::generateFilterFailureEvent(
191*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, bool asserted)
192*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>
193*7184805aSJagpal Singh Gill {
194*7184805aSJagpal Singh Gill namespace error_intf =
195*7184805aSJagpal Singh Gill sdbusplus::error::xyz::openbmc_project::state::Filter;
196*7184805aSJagpal Singh Gill namespace event_intf =
197*7184805aSJagpal Singh Gill sdbusplus::event::xyz::openbmc_project::state::Filter;
198*7184805aSJagpal Singh Gill
199*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".FilterFailure";
200*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
201*7184805aSJagpal Singh Gill
202*7184805aSJagpal Singh Gill if (asserted)
203*7184805aSJagpal Singh Gill {
204*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
205*7184805aSJagpal Singh Gill {
206*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
207*7184805aSJagpal Singh Gill ctx,
208*7184805aSJagpal Singh Gill error_intf::FilterRequiresService("FILTER_NAME", objectPath));
209*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
210*7184805aSJagpal Singh Gill }
211*7184805aSJagpal Singh Gill }
212*7184805aSJagpal Singh Gill else
213*7184805aSJagpal Singh Gill {
214*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
215*7184805aSJagpal Singh Gill {
216*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
217*7184805aSJagpal Singh Gill
218*7184805aSJagpal Singh Gill co_await lg2::commit(
219*7184805aSJagpal Singh Gill ctx, event_intf::FilterRestored("FILTER_NAME", objectPath));
220*7184805aSJagpal Singh Gill
221*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
222*7184805aSJagpal Singh Gill }
223*7184805aSJagpal Singh Gill }
224*7184805aSJagpal Singh Gill
225*7184805aSJagpal Singh Gill debug("Filter failure event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
226*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
227*7184805aSJagpal Singh Gill }
228*7184805aSJagpal Singh Gill
generatePumpFailureEvent(sdbusplus::message::object_path objectPath,bool asserted)229*7184805aSJagpal Singh Gill auto Events::generatePumpFailureEvent(
230*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, bool asserted)
231*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>
232*7184805aSJagpal Singh Gill {
233*7184805aSJagpal Singh Gill namespace error_intf = sdbusplus::error::xyz::openbmc_project::state::Pump;
234*7184805aSJagpal Singh Gill namespace event_intf = sdbusplus::event::xyz::openbmc_project::state::Pump;
235*7184805aSJagpal Singh Gill
236*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".PumpFailure";
237*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
238*7184805aSJagpal Singh Gill
239*7184805aSJagpal Singh Gill if (asserted)
240*7184805aSJagpal Singh Gill {
241*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
242*7184805aSJagpal Singh Gill {
243*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
244*7184805aSJagpal Singh Gill ctx, error_intf::PumpFailed("PUMP_NAME", objectPath));
245*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
246*7184805aSJagpal Singh Gill }
247*7184805aSJagpal Singh Gill }
248*7184805aSJagpal Singh Gill else
249*7184805aSJagpal Singh Gill {
250*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
251*7184805aSJagpal Singh Gill {
252*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
253*7184805aSJagpal Singh Gill
254*7184805aSJagpal Singh Gill co_await lg2::commit(
255*7184805aSJagpal Singh Gill ctx, event_intf::PumpRestored("PUMP_NAME", objectPath));
256*7184805aSJagpal Singh Gill
257*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
258*7184805aSJagpal Singh Gill }
259*7184805aSJagpal Singh Gill }
260*7184805aSJagpal Singh Gill
261*7184805aSJagpal Singh Gill debug("Pump failure event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
262*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
263*7184805aSJagpal Singh Gill }
264*7184805aSJagpal Singh Gill
generateFanFailureEvent(sdbusplus::message::object_path objectPath,bool asserted)265*7184805aSJagpal Singh Gill auto Events::generateFanFailureEvent(sdbusplus::message::object_path objectPath,
266*7184805aSJagpal Singh Gill bool asserted) -> sdbusplus::async::task<>
267*7184805aSJagpal Singh Gill {
268*7184805aSJagpal Singh Gill namespace error_intf = sdbusplus::error::xyz::openbmc_project::state::Fan;
269*7184805aSJagpal Singh Gill namespace event_intf = sdbusplus::event::xyz::openbmc_project::state::Fan;
270*7184805aSJagpal Singh Gill
271*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".FanFailure";
272*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
273*7184805aSJagpal Singh Gill
274*7184805aSJagpal Singh Gill if (asserted)
275*7184805aSJagpal Singh Gill {
276*7184805aSJagpal Singh Gill if (pendingEvent == pendingEvents.end())
277*7184805aSJagpal Singh Gill {
278*7184805aSJagpal Singh Gill auto eventPath = co_await lg2::commit(
279*7184805aSJagpal Singh Gill ctx, error_intf::FanFailed("FAN_NAME", objectPath));
280*7184805aSJagpal Singh Gill pendingEvents.emplace(eventName, eventPath);
281*7184805aSJagpal Singh Gill }
282*7184805aSJagpal Singh Gill }
283*7184805aSJagpal Singh Gill else
284*7184805aSJagpal Singh Gill {
285*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
286*7184805aSJagpal Singh Gill {
287*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
288*7184805aSJagpal Singh Gill
289*7184805aSJagpal Singh Gill co_await lg2::commit(
290*7184805aSJagpal Singh Gill ctx, event_intf::FanRestored("FAN_NAME", objectPath));
291*7184805aSJagpal Singh Gill
292*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
293*7184805aSJagpal Singh Gill }
294*7184805aSJagpal Singh Gill }
295*7184805aSJagpal Singh Gill
296*7184805aSJagpal Singh Gill debug("Fan failure event for {EVENT_NAME} is {STATUS}", "EVENT_NAME",
297*7184805aSJagpal Singh Gill eventName, "STATUS", (asserted ? "asserted" : "deasserted"));
298*7184805aSJagpal Singh Gill }
299*7184805aSJagpal Singh Gill
generateLeakDetectedEvent(sdbusplus::message::object_path objectPath,EventLevel level,bool asserted)300*7184805aSJagpal Singh Gill auto Events::generateLeakDetectedEvent(
301*7184805aSJagpal Singh Gill sdbusplus::message::object_path objectPath, EventLevel level, bool asserted)
302*7184805aSJagpal Singh Gill -> sdbusplus::async::task<>
303*7184805aSJagpal Singh Gill {
304*7184805aSJagpal Singh Gill auto eventName = objectPath.str + ".Leak." + eventLevelToName.at(level);
305*7184805aSJagpal Singh Gill
306*7184805aSJagpal Singh Gill if (!asserted)
307*7184805aSJagpal Singh Gill {
308*7184805aSJagpal Singh Gill auto pendingEvent = pendingEvents.find(eventName);
309*7184805aSJagpal Singh Gill if (pendingEvent != pendingEvents.end())
310*7184805aSJagpal Singh Gill {
311*7184805aSJagpal Singh Gill co_await lg2::resolve(ctx, pendingEvent->second);
312*7184805aSJagpal Singh Gill
313*7184805aSJagpal Singh Gill using DetectorNormal = sdbusplus::event::xyz::openbmc_project::
314*7184805aSJagpal Singh Gill state::leak::Detector::LeakDetectedNormal;
315*7184805aSJagpal Singh Gill co_await lg2::commit(ctx,
316*7184805aSJagpal Singh Gill DetectorNormal("DETECTOR_NAME", objectPath));
317*7184805aSJagpal Singh Gill
318*7184805aSJagpal Singh Gill pendingEvents.erase(eventName);
319*7184805aSJagpal Singh Gill }
320*7184805aSJagpal Singh Gill co_return;
321*7184805aSJagpal Singh Gill }
322*7184805aSJagpal Singh Gill
323*7184805aSJagpal Singh Gill namespace error_intf =
324*7184805aSJagpal Singh Gill sdbusplus::error::xyz::openbmc_project::state::leak::Detector;
325*7184805aSJagpal Singh Gill sdbusplus::message::object_path eventPath{};
326*7184805aSJagpal Singh Gill
327*7184805aSJagpal Singh Gill if (level == EventLevel::critical)
328*7184805aSJagpal Singh Gill {
329*7184805aSJagpal Singh Gill eventPath = co_await lg2::commit(
330*7184805aSJagpal Singh Gill ctx, error_intf::LeakDetectedCritical("DETECTOR_NAME", objectPath));
331*7184805aSJagpal Singh Gill error("Critical leak detected for {PATH}", "PATH", objectPath);
332*7184805aSJagpal Singh Gill }
333*7184805aSJagpal Singh Gill else
334*7184805aSJagpal Singh Gill {
335*7184805aSJagpal Singh Gill eventPath = co_await lg2::commit(
336*7184805aSJagpal Singh Gill ctx, error_intf::LeakDetectedWarning("DETECTOR_NAME", objectPath));
337*7184805aSJagpal Singh Gill warning("Warning leak detected for {PATH}", "PATH", objectPath);
338*7184805aSJagpal Singh Gill }
339*7184805aSJagpal Singh Gill pendingEvents[eventName] = eventPath;
340*7184805aSJagpal Singh Gill }
341*7184805aSJagpal Singh Gill
342*7184805aSJagpal Singh Gill } // namespace phosphor::modbus::events
343