#pragma once #include "util.h" #include #include #include #include using namespace ofen; using ExFun_t = std::function; class CServer { public: CServer(); ~CServer(); }; class CClient : public std::enable_shared_from_this { public: CClient(asio::io_context& io_context, const std::shared_ptr& logger); ~CClient(); public: bool Connect(const std::string& host, const std::string& port); void Disconnect(); bool Send(const char* data, int len); void register_func(ExFun_t& f); void Receive(); private: std::shared_ptr logger_; asio::io_context& io_context_; asio::ip::tcp::socket socket_; std::mutex mutex_; CMutBuffer buffer_; std::array tmp_buf_; ExFun_t fun_; };