/* Copyright© 2021 John Sennesael UsenetSearch is Free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. UsenetSearch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with UsenetSearch. If not, see . */ #pragma once #include "usenetsearch/Except.h" #include "usenetsearch/IoSocket.h" #include #include namespace usenetsearch { struct SocketException: public UsenetSearchException { SocketException(const std::string& message): UsenetSearchException(message){} virtual ~SocketException() = default; }; class TcpConnection: public IoSocket { int m_fd{0}; public: virtual ~TcpConnection(); void Connect(const std::string& host, std::uint16_t port); void Disconnect(); int FileDescriptor() const; virtual std::string Read(size_t amount) override; virtual void Write(const std::string& data) override; }; } // namespace usenetsearch