| /** | 
 |  * @file PathWatchimpl.hpp | 
 |  * @brief Add interfaces added watch for the specified path | 
 |  * | 
 |  */ | 
 | #pragma once | 
 |  | 
 | #include "callback.hpp" | 
 | #include "data_types.hpp" | 
 | #include "pathwatch.hpp" | 
 |  | 
 | #include <sdbusplus/bus/match.hpp> | 
 | #include <sdbusplus/message.hpp> | 
 | #include <vector> | 
 |  | 
 | namespace phosphor | 
 | { | 
 | namespace dbus | 
 | { | 
 | namespace monitoring | 
 | { | 
 |  | 
 | template <typename DBusInterfaceType> | 
 | void PathWatch<DBusInterfaceType>::start() | 
 | { | 
 |     if (alreadyRan) | 
 |     { | 
 |         return; | 
 |     } | 
 |     // Watch for new interfaces added on this path. | 
 |     DBusInterfaceType::addMatch( | 
 |         sdbusplus::bus::match::rules::interfacesAdded(objectPath), | 
 |         [this](auto& msg) | 
 |         // *INDENT-OFF* | 
 |         { (this->cb)(Context::SIGNAL, msg); }); | 
 |     // *INDENT-ON* | 
 |  | 
 |     alreadyRan = true; | 
 | } | 
 |  | 
 | template <typename DBusInterfaceType> | 
 | void PathWatch<DBusInterfaceType>::callback(Context ctx) | 
 | { | 
 |     (this->cb)(ctx); | 
 | } | 
 |  | 
 | template <typename DBusInterfaceType> | 
 | void PathWatch<DBusInterfaceType>::callback(Context ctx, | 
 |                                             sdbusplus::message::message& msg) | 
 | { | 
 |     (this->cb)(ctx, msg); | 
 | } | 
 | } // namespace monitoring | 
 | } // namespace dbus | 
 | } // namespace phosphor |