blob: 8b7e8eea105336052afbabe9f1b552816137a4a3 [file] [log] [blame]
/**
* @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