コード例 #1
0
ファイル: aio_istream.cpp プロジェクト: gameogre/acl
void aio_istream::read_wait(int timeout /* = 0 */)
{
	// 设置流的异步读超时时间
	if (timeout >= 0)
		ACL_AIO_SET_TIMEOUT(stream_, timeout);
	acl_aio_enable_read(stream_, read_wakeup, this);
}
コード例 #2
0
ファイル: aio_ostream.cpp プロジェクト: 1514louluo/acl
void aio_ostream::write_wait(int timeout /* = 0 */)
{
	// 设置流的异步读超时时间
	if (timeout >= 0)
		ACL_AIO_SET_TIMEOUT(stream_, timeout);
	acl_aio_enable_write(stream_, write_wakup, this);
}
コード例 #3
0
ファイル: aio_istream.cpp プロジェクト: gameogre/acl
void aio_istream::gets(int timeout /* = 0 */, bool nonl /* = true */,
	acl_int64 delay /* = 0 */, aio_timer_reader* callback /* = NULL */)
{
	if (delay > 0)
	{
		// 设置新的或重置读延迟定时器

		disable_read();

		if (callback != NULL)
		{
			if (timer_reader_ != NULL)
			{
				handle_->del_timer(timer_reader_);
				timer_reader_->destroy();
			}
			timer_reader_= callback;
		}

		if (timer_reader_ == NULL)
			timer_reader_ = NEW aio_timer_reader();
		// 设置 timer_reader_ 对象的成员变量
		timer_reader_->in_ = this;
		timer_reader_->delay_gets_ = true;
		timer_reader_->delay_timeout_ = timeout;
		timer_reader_->delay_nonl_ = nonl;

		// 设置异步读定时器
		handle_->set_timer(timer_reader_, delay);
		return;
	}
	else if (timer_reader_ != NULL)
	{
		// 立即取消之前设置的异步读定时器
		handle_->del_timer(timer_reader_);
		timer_reader_->destroy();
		timer_reader_ = NULL;
	}

	// 设置流的异步读超时时间
	if (timeout >= 0)
		if (timeout >= 0)
			ACL_AIO_SET_TIMEOUT(stream_, timeout);
	if (nonl)
		acl_aio_gets_nonl(stream_);
	else
		acl_aio_gets(stream_);
}