#pragma once class req_callback; class res_callback : public acl::aio_open_callback { public: res_callback(req_callback* req, acl::ofstream* res_fp); ~res_callback(); bool start(acl::aio_handle& handle, const char* server_addr); acl::aio_socket_stream& get_conn(); void disconnect(); void on_closed(); protected: /** * 实现父类中的虚函数,客户端流的读成功回调过程 * @param data {char*} 读到的数据地址 * @param len {int} 读到的数据长度 * @return {bool} 返回 true 表示继续,否则希望关闭该异步流 */ virtual bool read_callback(char* data, int len); /** * 实现父类中的虚函数,客户端流的写成功回调过程 * @return {bool} 返回 true 表示继续,否则希望关闭该异步流 */ virtual bool write_callback() { return true; } /** * 实现父类中的虚函数,客户端流的关闭回调过程 */ virtual void close_callback(); /** * 实现父类中的虚函数,客户端流的超时回调过程 * @return {bool} 返回 true 表示继续,否则希望关闭该异步流 */ virtual bool timeout_callback() { // 返回 false 通知异步框架关闭该异步流 return false; } /** * 基类虚函数, 当异步连接成功后调用此函数 * @return {bool} 返回给调用者 true 表示继续,否则表示需要关闭异步流 */ virtual bool open_callback(); private: acl::aio_socket_stream* conn_; req_callback* req_; acl::ofstream* res_fp_; };