treewide: Move timers out of networkd lib scope
Change-Id: I5fd0fc70d007e0851329172b8421846a78016d57
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 51863a7..557e826 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -29,7 +29,6 @@
namespace network
{
-extern std::unique_ptr<Timer> reloadTimer;
using namespace phosphor::logging;
using namespace sdbusplus::xyz::openbmc_project::Common::Error;
using Argument = xyz::openbmc_project::Common::InvalidArgument;
@@ -40,10 +39,11 @@
"link',interface='org.freedesktop.DBus.Properties',member='"
"PropertiesChanged',arg0='org.freedesktop.network1.Link',";
-Manager::Manager(sdbusplus::bus_t& bus, const char* objPath,
+Manager::Manager(sdbusplus::bus_t& bus, DelayedExecutor& reload,
+ stdplus::zstring_view objPath,
const std::filesystem::path& confDir) :
- ManagerIface(bus, objPath, ManagerIface::action::defer_emit),
- bus(bus), objPath(std::string(objPath)), confDir(confDir),
+ ManagerIface(bus, objPath.c_str(), ManagerIface::action::defer_emit),
+ reload(reload), bus(bus), objPath(std::string(objPath)), confDir(confDir),
systemdNetworkdEnabledMatch(
bus, enabledMatch, [&](sdbusplus::message_t& m) {
std::string intf;
@@ -76,6 +76,47 @@
}
})
{
+ reload.setCallback([&]() {
+ for (auto& hook : reloadPreHooks)
+ {
+ try
+ {
+ hook();
+ }
+ catch (const std::exception& ex)
+ {
+ log<level::ERR>("Failed executing reload hook, ignoring",
+ entry("ERR=%s", ex.what()));
+ }
+ }
+ reloadPreHooks.clear();
+ try
+ {
+ auto method = bus.new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
+ NETWORKD_INTERFACE, "Reload");
+ bus.call_noreply(method);
+ log<level::INFO>("Reloaded systemd-networkd");
+ }
+ catch (const sdbusplus::exception_t& ex)
+ {
+ log<level::ERR>("Failed to reload configuration",
+ entry("ERR=%s", ex.what()));
+ reloadPostHooks.clear();
+ }
+ for (auto& hook : reloadPostHooks)
+ {
+ try
+ {
+ hook();
+ }
+ catch (const std::exception& ex)
+ {
+ log<level::ERR>("Failed executing reload hook, ignoring",
+ entry("ERR=%s", ex.what()));
+ }
+ }
+ reloadPostHooks.clear();
+ });
std::vector<
std::tuple<int32_t, std::string, sdbusplus::message::object_path>>
links;
@@ -463,53 +504,6 @@
}
}
-void Manager::reloadConfigs()
-{
- reloadTimer->restartOnce(reloadTimeout);
-}
-
-void Manager::doReloadConfigs()
-{
- for (auto& hook : reloadPreHooks)
- {
- try
- {
- hook();
- }
- catch (const std::exception& ex)
- {
- log<level::ERR>("Failed executing reload hook, ignoring",
- entry("ERR=%s", ex.what()));
- }
- }
- reloadPreHooks.clear();
- try
- {
- auto method = bus.new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
- NETWORKD_INTERFACE, "Reload");
- bus.call_noreply(method);
- }
- catch (const sdbusplus::exception_t& ex)
- {
- log<level::ERR>("Failed to reload configuration",
- entry("ERR=%s", ex.what()));
- reloadPostHooks.clear();
- }
- for (auto& hook : reloadPostHooks)
- {
- try
- {
- hook();
- }
- catch (const std::exception& ex)
- {
- log<level::ERR>("Failed executing reload hook, ignoring",
- entry("ERR=%s", ex.what()));
- }
- }
- reloadPostHooks.clear();
-}
-
void Manager::handleAdminState(std::string_view state, unsigned ifidx)
{
if (state == "initialized" || state == "linger")