bool master_service::on_accept(acl::aio_socket_stream* client) { // 如果允许在主线程中预读,则设置流的预读标志位 if (var_cfg_preread) { ACL_VSTREAM* vstream = client->get_vstream(); vstream->flag |= ACL_VSTREAM_FLAG_PREREAD; } // 创建异步客户端流的回调对象并与该异步流进行绑定 http_client* callback = new http_client(client, __conn_manager); // 注册异步流的读回调过程 client->add_read_callback(callback); // 注册异步流的写回调过程 client->add_write_callback(callback); // 注册异步流的关闭回调过程 client->add_close_callback(callback); // 注册异步流的超时回调过程 client->add_timeout_callback(callback); rpc_read_wait_add(); // 监控异步流是否可读 client->read_wait(0); return true; }
void http_rpc::rpc_onover() { // 减少 rpc 计数 rpc_del(); if (keep_alive_) { rpc_read_wait_add(); // 监控异步流是否可读 client_->read_wait(10); } else // 关闭异步流对象 client_->close(); }