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); }
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); }
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_); }