Пример #1
0
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;
}
Пример #2
0
void http_rpc::rpc_onover()
{
	// 减少 rpc 计数
	rpc_del();

	if (keep_alive_)
	{
		rpc_read_wait_add();

		// 监控异步流是否可读
		client_->read_wait(10);
	}
	else
		// 关闭异步流对象
		client_->close();
}