blob: 9049b0ef217e0f82f79daa9635243fe50b055538 [file] [log] [blame]
#include "dbus_handler.hpp"
namespace boot_time_monitor
{
namespace dbus
{
namespace btm = boot_time_monitor;
constexpr std::string_view kPSUCheckpointName = "TrayPowerCycle";
constexpr std::string_view kPSUDurationName = "TrayPowerCycle";
Handler::Handler(sdbusplus::bus::bus& dbus, const btm::NodeConfig& nodeConfig,
const btm::dbus::DbusConfig& dbusConfig,
std::shared_ptr<btm::api::IApi> api) :
sdbusplus::server::object::object<Duration>(dbus,
dbusConfig.dbusObjPath.c_str()),
sdbusplus::server::object::object<Checkpoint>(
dbus, dbusConfig.dbusObjPath.c_str()),
sdbusplus::server::object::object<Statistic>(
dbus, dbusConfig.dbusObjPath.c_str()),
mNodeConfig(nodeConfig), mApi(api)
{}
void Handler::setCheckpoint(std::string checkpointName, int64_t wallTime,
int64_t selfMeasuredDuration)
{
if (checkpointName == kPSUCheckpointName)
mApi->SetPSUCheckpoint(checkpointName, wallTime, selfMeasuredDuration);
else
mApi->SetNodeCheckpoint(mNodeConfig, checkpointName, wallTime,
selfMeasuredDuration);
}
std::vector<std::tuple<std::string, int64_t, int64_t>>
Handler::getCheckpointList()
{
return mApi->GetNodeCheckpointList(mNodeConfig);
}
void Handler::rebootComplete()
{
if (!isRebooting())
{
fmt::print(stderr,
"[{}]: Not rebooting. Skip this `rebootComplete` command\n",
__FUNCTION__);
return;
}
mApi->NotifyNodeComplete(mNodeConfig);
}
void Handler::setDuration(std::string durationName, int64_t duration)
{
if (durationName == kPSUDurationName)
mApi->SetPSUDuration(durationName, duration);
else
mApi->SetNodeDuration(mNodeConfig, durationName, duration);
}
std::vector<std::tuple<std::string, int64_t>> Handler::getAdditionalDurations()
{
return mApi->GetNodeAdditionalDurations(mNodeConfig);
}
bool Handler::isRebooting() const
{
return mApi->IsNodeRebooting(mNodeConfig);
}
} // namespace dbus
} // namespace boot_time_monitor