// Copyright (c) 2011-2016 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include namespace System { class Dispatcher; class Ipv4Address; class TcpConnection { public: TcpConnection(); TcpConnection(const TcpConnection&) = delete; TcpConnection(TcpConnection&& other); ~TcpConnection(); TcpConnection& operator=(const TcpConnection&) = delete; TcpConnection& operator=(TcpConnection&& other); std::size_t read(uint8_t* data, std::size_t size); std::size_t write(const uint8_t* data, std::size_t size); std::pair getPeerAddressAndPort() const; private: friend class TcpConnector; friend class TcpListener; Dispatcher* dispatcher; int connection; void* readContext; void* writeContext; TcpConnection(Dispatcher& dispatcher, int socket); }; }