summaryrefslogtreecommitdiff
path: root/src/interfaces/mount_point_state_machine.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/mount_point_state_machine.hpp')
-rw-r--r--src/interfaces/mount_point_state_machine.hpp40
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