network_manager: Upgrade delayed executor to be more generically useful

We can now use this in more parts of the codebase and with timeouts that
have more precision than 1 second.

Change-Id: I77c677230df6c288b29cd0895fe36f3f0158b393
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/network_manager.hpp b/src/network_manager.hpp
index 0ea8f2b..e119acc 100644
--- a/src/network_manager.hpp
+++ b/src/network_manager.hpp
@@ -29,15 +29,6 @@
     sdbusplus::xyz::openbmc_project::Network::VLAN::server::Create,
     sdbusplus::xyz::openbmc_project::Common::server::FactoryReset>;
 
-class DelayedExecutor
-{
-  public:
-    virtual ~DelayedExecutor() = default;
-
-    virtual void schedule() = 0;
-    virtual void setCallback(fu2::unique_function<void()>&& cb) = 0;
-};
-
 /** @class Manager
  *  @brief OpenBMC network manager implementation.
  */
diff --git a/src/network_manager_main.cpp b/src/network_manager_main.cpp
index ca971f3..a65e635 100644
--- a/src/network_manager_main.cpp
+++ b/src/network_manager_main.cpp
@@ -33,7 +33,7 @@
     using Timer = sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic>;
 
   public:
-    TimerExecutor(sdeventplus::Event& event, std::chrono::seconds delay) :
+    TimerExecutor(sdeventplus::Event& event, std::chrono::milliseconds delay) :
         delay(delay), timer(event, nullptr)
     {}
 
@@ -48,7 +48,7 @@
     }
 
   private:
-    std::chrono::seconds delay;
+    std::chrono::milliseconds delay;
     Timer timer;
 };
 
diff --git a/src/types.hpp b/src/types.hpp
index 14de360..6195c3f 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -1,4 +1,5 @@
 #pragma once
+#include <function2/function2.hpp>
 #include <stdplus/net/addr/ether.hpp>
 #include <stdplus/net/addr/ip.hpp>
 #include <stdplus/net/addr/subnet.hpp>
@@ -11,6 +12,15 @@
 namespace phosphor::network
 {
 
+class DelayedExecutor
+{
+  public:
+    virtual ~DelayedExecutor() = default;
+
+    virtual void schedule() = 0;
+    virtual void setCallback(fu2::unique_function<void()>&& cb) = 0;
+};
+
 /** @class InterfaceInfo
  *  @brief Information about interfaces from the kernel
  */