diff options
Diffstat (limited to 'src/interfaces/mount_point_state_machine.hpp')
-rw-r--r-- | src/interfaces/mount_point_state_machine.hpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/interfaces/mount_point_state_machine.hpp b/src/interfaces/mount_point_state_machine.hpp new file mode 100644 index 0000000..db521fb --- /dev/null +++ b/src/interfaces/mount_point_state_machine.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "configuration.hpp" +#include "resources.hpp" + +struct BasicState; + +namespace interfaces +{ + +struct MountPointStateMachine +{ + struct Target + { + std::string imgUrl; + bool rw; + std::unique_ptr<resource::Mount> mountPoint; + std::unique_ptr<utils::CredentialsProvider> credentials; + }; + + virtual ~MountPointStateMachine() = default; + + virtual std::string_view getName() const = 0; + virtual Configuration::MountPoint& getConfig() = 0; + virtual std::optional<Target>& getTarget() = 0; + virtual BasicState& getState() = 0; + virtual int& getExitCode() = 0; + virtual boost::asio::io_context& getIoc() = 0; + + virtual void emitRegisterDBusEvent( + std::shared_ptr<sdbusplus::asio::connection> bus, + std::shared_ptr<sdbusplus::asio::object_server> objServer) = 0; + virtual void emitMountEvent(std::optional<Target>) = 0; + virtual void emitUnmountEvent() = 0; + virtual void emitSubprocessStoppedEvent() = 0; + virtual void emitUdevStateChangeEvent(const NBDDevice& dev, + StateChange devState) = 0; +}; + +} // namespace interfaces |