#pragma once #include "DomoticzHardware.h" #include "RFXBase.h" #if defined WIN32 #include "ws2tcpip.h" #endif #include "ASyncTCP.h" class DomoticzTCP : public CRFXBase, ASyncTCP { public: DomoticzTCP(int ID, const std::string &IPAddress, unsigned short usIPPort, const std::string &username, const std::string &password); ~DomoticzTCP() override = default; bool WriteToHardware(const char *pdata, unsigned char length) override; boost::signals2::signal sDisconnected; #ifndef NOCLOUD void SetConnected(bool connected); bool isConnected(); void Authenticated(const std::string &aToken, bool authenticated); void FromProxy(const unsigned char *data, size_t datalen); bool CompareToken(const std::string &aToken); bool CompareId(const std::string &instanceid); bool ConnectInternalProxy(); void DisconnectProxy(); #endif private: bool StartHardware() override; bool StopHardware() override; void Do_Work(); #ifndef NOCLOUD bool StartHardwareProxy(); void writeProxy(const char *data, size_t size); bool isConnectedProxy(); bool IsValidAPIKey(const std::string &IPAddress); bool StopHardwareProxy(); std::string GetToken(); #endif std::string m_szIPAddress; unsigned short m_usIPPort; std::string m_username; std::string m_password; std::shared_ptr m_thread; #ifndef NOCLOUD std::string token; bool b_ProxyConnected; bool b_useProxy; #endif protected: void OnConnect() override; void OnDisconnect() override; void OnData(const unsigned char *pData, size_t length) override; void OnError(const boost::system::error_code &error) override; };