48 lines
1.1 KiB
C++
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
|