From 026bbfaf2b5d73a26b8e2fa49158883ef64c211b Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期四, 27 五月 2021 13:51:26 +0800 Subject: [PATCH] tcp server call center to send proxy requests. --- box/tcp_connection.h | 37 ++++++++++++++++++++++++++----------- 1 files changed, 26 insertions(+), 11 deletions(-) diff --git a/box/tcp_connection.h b/box/tcp_connection.h index b3b8344..5aa93a4 100644 --- a/box/tcp_connection.h +++ b/box/tcp_connection.h @@ -18,46 +18,61 @@ #ifndef TCP_CONNECTION_H373GIL5 #define TCP_CONNECTION_H373GIL5 +#include "bh_util.h" +#include "node_center.h" #include "tcp_common.h" #include <functional> #include <memory> +class ShmSocket; class TcpRequest1 : public std::enable_shared_from_this<TcpRequest1> { public: - static void Create(boost::asio::io_context &io, tcp::endpoint const &addr, std::string request) + static void Create(boost::asio::io_context &io, tcp::endpoint const &addr, std::string request, ShmSocket &shm_socket) { - std::make_shared<TcpRequest1>(io, addr, std::move(request))->Connect(); + std::make_shared<TcpRequest1>(io, addr, std::move(request), shm_socket)->Start(); } - TcpRequest1(boost::asio::io_context &io, tcp::endpoint const &addr, std::string request); + TcpRequest1(boost::asio::io_context &io, tcp::endpoint const &addr, std::string request, ShmSocket &shm_socket) : + socket_(io), shm_socket_(shm_socket), remote_(addr), request_(std::move(request)) {} + void OnError(bserror_t ec); private: - void Connect(); + void Start(); void Close(); - void SendRequest(); - void ReadReply(); + void OnRead(size_t size); tcp::socket socket_; + ShmSocket &shm_socket_; // send reply tcp::endpoint remote_; std::string request_; - std::vector<char> buffer_; + std::vector<char> recv_buffer_; + size_t recv_len_ = 0; }; +class NodeCenter; class TcpReply1 : public std::enable_shared_from_this<TcpReply1> { public: - static void Create(tcp::socket sock) + typedef std::shared_ptr<Synced<NodeCenter>> CenterPtr; + static void Create(tcp::socket sock, CenterPtr pscenter) { - std::make_shared<TcpReply1>(std::move(sock))->Start(); + std::make_shared<TcpReply1>(std::move(sock), pscenter)->Start(); } - TcpReply1(tcp::socket sock); - void Start(); + TcpReply1(tcp::socket sock, CenterPtr pscenter) : + socket_(std::move(sock)), pscenter_(pscenter) {} + void OnError(bserror_t ec); private: + void Start(); + void Close(); + void OnRead(size_t size); + tcp::socket socket_; + CenterPtr pscenter_; std::vector<char> recv_buffer_; + uint32_t recv_len_ = 0; std::string send_buffer_; }; -- Gitblit v1.8.0