#pragma once #include "acl_cpp/ipc/rpc.hpp" #include "acl_cpp/stream/aio_socket_stream.hpp" #include "acl_cpp/stream/socket_stream.hpp" //class acl::aio_socket_stream; //class acl::socket_stream; class http_rpc : public acl::rpc_request { public: http_rpc(acl::aio_socket_stream* client, unsigned buf_size); ~http_rpc(); protected: // 子线程处理函数 virtual void rpc_run(); // 主线程处理过程,收到子线程任务完成的消息 virtual void rpc_onover(); private: bool proc_quit_; // 程序是否应该退出 acl::aio_handle& handle_; // 异步框架引擎 acl::aio_socket_stream* client_; // 客户端连接流 bool keep_alive_; // 是否与客户端保持长连接 char* res_buf_; // 存放返回给客户端数据的缓冲区 unsigned buf_size_; // res_buf_ 的空间大小 // 在子线程中以阻塞方式处理客户端请求 void handle_conn(acl::socket_stream* stream); };