summaryrefslogtreecommitdiffstats
path: root/manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'manager.cpp')
-rw-r--r--manager.cpp79
1 files changed, 52 insertions, 27 deletions
diff --git a/manager.cpp b/manager.cpp
index 56e0d0b..bcc581c 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -134,20 +134,12 @@ void Manager::onPropertyChanged(const std::string& key,
if (key == PROPERTY_TIME_MODE)
{
setCurrentTimeMode(value);
- for (const auto listener : listeners)
- {
- listener->onModeChanged(timeMode);
- }
- // When time_mode is updated, update the NTP setting
- updateNtpSetting(value);
+ onTimeModeChanged(value);
}
else if (key == PROPERTY_TIME_OWNER)
{
setCurrentTimeOwner(value);
- for (const auto listener : listeners)
- {
- listener->onOwnerChanged(timeOwner);
- }
+ onTimeOwnerChanged();
}
}
}
@@ -259,20 +251,17 @@ void Manager::onPgoodChanged(bool pgood)
}
if (!requestedMode.empty())
{
- setCurrentTimeMode(requestedMode);
- for (const auto& listener : listeners)
+ if (setCurrentTimeMode(requestedMode))
{
- listener->onModeChanged(timeMode);
+ onTimeModeChanged(requestedMode);
}
- updateNtpSetting(requestedMode);
setRequestedMode({}); // Clear requested mode
}
if (!requestedOwner.empty())
{
- setCurrentTimeOwner(requestedOwner);
- for (const auto& listener : listeners)
+ if (setCurrentTimeOwner(requestedOwner))
{
- listener->onOwnerChanged(timeOwner);
+ onTimeOwnerChanged();
}
setRequestedOwner({}); // Clear requested owner
}
@@ -300,20 +289,56 @@ int Manager::onPgoodChanged(sd_bus_message* msg,
return 0;
}
-void Manager::setCurrentTimeMode(const std::string& mode)
+bool Manager::setCurrentTimeMode(const std::string& mode)
{
- log<level::INFO>("Time mode is changed",
- entry("MODE=%s", mode.c_str()));
- timeMode = convertToMode(mode);
- utils::writeData(modeFile, mode);
+ auto newMode = convertToMode(mode);
+ if (newMode != timeMode)
+ {
+ log<level::INFO>("Time mode is changed",
+ entry("MODE=%s", mode.c_str()));
+ timeMode = newMode;
+ utils::writeData(modeFile, mode);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool Manager::setCurrentTimeOwner(const std::string& owner)
+{
+ auto newOwner = convertToOwner(owner);
+ if (newOwner != timeOwner)
+ {
+ log<level::INFO>("Time owner is changed",
+ entry("OWNER=%s", owner.c_str()));
+ timeOwner = newOwner;
+ utils::writeData(ownerFile, owner);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+void Manager::onTimeModeChanged(const std::string& mode)
+{
+ for (const auto listener : listeners)
+ {
+ listener->onModeChanged(timeMode);
+ }
+ // When time_mode is updated, update the NTP setting
+ updateNtpSetting(mode);
}
-void Manager::setCurrentTimeOwner(const std::string& owner)
+void Manager::onTimeOwnerChanged()
{
- log<level::INFO>("Time owner is changed",
- entry("OWNER=%s", owner.c_str()));
- timeOwner = convertToOwner(owner);
- utils::writeData(ownerFile, owner);
+ for (const auto& listener : listeners)
+ {
+ listener->onOwnerChanged(timeOwner);
+ }
}
std::string Manager::getSettings(const char* value) const
OpenPOWER on IntegriCloud