diff options
Diffstat (limited to 'virtual-media/src/main.cpp')
-rw-r--r-- | virtual-media/src/main.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/virtual-media/src/main.cpp b/virtual-media/src/main.cpp index 792cdf2..3636e59 100644 --- a/virtual-media/src/main.cpp +++ b/virtual-media/src/main.cpp @@ -1,5 +1,6 @@ #include "configuration.hpp" #include "logger.hpp" +#include "state_machine.hpp" #include "system.hpp" #include <sys/mount.h> @@ -40,12 +41,25 @@ class App objManager = std::make_shared<sdbusplus::server::manager::manager>( *bus, "/xyz/openbmc_project/VirtualMedia"); - devMonitor.run([](const NBDDevice& device, StateChange change) { - // placeholder for some future actions + for (const auto& [name, entry] : config.mountPoints) + { + mpsm[name] = std::make_shared<MountPointStateMachine>( + ioc, devMonitor, name, entry); + mpsm[name]->emitRegisterDBusEvent(bus, objServer); + } + + devMonitor.run([this](const NBDDevice& device, StateChange change) { + for (auto& [name, entry] : mpsm) + { + entry->emitUdevStateChangeEvent(device, change); + } }); } private: + boost::container::flat_map<std::string, + std::shared_ptr<MountPointStateMachine>> + mpsm; boost::asio::io_context& ioc; std::shared_ptr<sdbusplus::asio::connection> bus; std::shared_ptr<sdbusplus::asio::object_server> objServer; |