#pragma once #include "ddkit/access/IConnectUpdate.hpp" #include "ddkit/access/IConnectCheck.hpp" #include #include namespace ddkit { namespace access { class ConnectState final : public IConnectUpdate, public IConnectCheck { public: ConnectState(const std::string& name, const std::string& nameModule, const std::string& nameTopic); // IConnectUpdate void setIsConnected() override; void setIsNotConnected() override; // IConnectCheck std::string name() override; std::string nameModule() override; std::string nameTopic() override; bool isConnected() override; void waitUntilConnected(); private: std::string m_name; std::string m_nameModule; std::string m_nameTopic; std::recursive_mutex m_mutex; std::condition_variable_any m_condition; bool m_isConnected; // no copying ConnectState(ConnectState const&) = delete; ConnectState(ConnectState&&) = delete; void operator=(ConnectState const&) = delete; }; typedef std::shared_ptr ConnectStatePtr; } // namespace access } // namespace ddkit