Files
2026-10-23 16:13:31 +00:00

48 lines
1.1 KiB
C++

#pragma once
#include "ddkit/access/IConnectUpdate.hpp"
#include "ddkit/access/IConnectCheck.hpp"
#include <mutex>
#include <condition_variable>
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<ConnectState> ConnectStatePtr;
} // namespace access
} // namespace ddkit