diff options
Diffstat (limited to 'lib/Socket.h')
| -rw-r--r-- | lib/Socket.h | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/lib/Socket.h b/lib/Socket.h index b9f6317..84def40 100644 --- a/lib/Socket.h +++ b/lib/Socket.h @@ -291,4 +291,32 @@ class TCPReceiveServer {          TCPSocket m_listener_socket;  }; +/* A TCP client that abstracts the handling of connects and disconnects. + */ +class TCPSendClient { +    public: +        TCPSendClient(const std::string& hostname, int port); +        ~TCPSendClient(); + +        /* Throws a runtime_error on error +         */ +        void sendall(const std::vector<uint8_t>& buffer); + +    private: +        void process(); + +        std::string m_hostname; +        int m_port; + +        bool m_is_connected = false; + +        TCPSocket m_sock; +        static constexpr size_t MAX_QUEUE_SIZE = 1024; +        ThreadsafeQueue<std::vector<uint8_t> > m_queue; +        std::atomic<bool> m_running; +        std::string m_exception_data; +        std::thread m_sender_thread; +        TCPSocket m_listener_socket; +}; +  } | 
