/** @file * @author Edouard DUPIN * @copyright 2016, Edouard DUPIN, all right reserved * @license APACHE v2.0 (see license file) */ #pragma once #include #include #include #include #include namespace jus { class TcpString : public eproperty::Interface { private: enet::Tcp m_connection; std::thread* m_thread; bool m_threadRunning; public: esignal::Signal signalIsConnected; esignal::Signal signalData; public: TcpString(); TcpString(enet::Tcp _connection); virtual ~TcpString(); void setInterface(enet::Tcp _connection); void connect(bool _async = false); void disconnect(); bool isActive() const; void setInterfaceName(const std::string& _name); int32_t write(const std::string& _data); std::string asyncRead(); private: std::string read(); private: void threadCallback(); }; }