fix
GitOrigin-RevId: 20f47274a3545fe85c26067a650232fa6f87cdc4
This commit is contained in:
parent
8bd8f4a136
commit
a7c2a401b8
@ -217,18 +217,7 @@ class Client::Impl final {
|
|||||||
SCOPE_EXIT {
|
SCOPE_EXIT {
|
||||||
receive_lock_.exchange(false);
|
receive_lock_.exchange(false);
|
||||||
};
|
};
|
||||||
if (output_queue_ready_cnt_ == 0) {
|
return receive_unlocked(timeout);
|
||||||
output_queue_ready_cnt_ = output_queue_->reader_wait_nonblock();
|
|
||||||
}
|
|
||||||
if (output_queue_ready_cnt_ > 0) {
|
|
||||||
output_queue_ready_cnt_--;
|
|
||||||
return output_queue_->reader_get_unsafe();
|
|
||||||
}
|
|
||||||
if (timeout != 0) {
|
|
||||||
poll_.run(static_cast<int>(timeout * 1000));
|
|
||||||
return receive(0);
|
|
||||||
}
|
|
||||||
return {0, nullptr};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Impl(const Impl &) = delete;
|
Impl(const Impl &) = delete;
|
||||||
@ -269,6 +258,21 @@ class Client::Impl final {
|
|||||||
auto &event_fd = output_queue_->reader_get_event_fd();
|
auto &event_fd = output_queue_->reader_get_event_fd();
|
||||||
poll_.subscribe(event_fd.get_fd(), Fd::Read);
|
poll_.subscribe(event_fd.get_fd(), Fd::Read);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Response receive_unlocked(double timeout) {
|
||||||
|
if (output_queue_ready_cnt_ == 0) {
|
||||||
|
output_queue_ready_cnt_ = output_queue_->reader_wait_nonblock();
|
||||||
|
}
|
||||||
|
if (output_queue_ready_cnt_ > 0) {
|
||||||
|
output_queue_ready_cnt_--;
|
||||||
|
return output_queue_->reader_get_unsafe();
|
||||||
|
}
|
||||||
|
if (timeout != 0) {
|
||||||
|
poll_.run(static_cast<int>(timeout * 1000));
|
||||||
|
return receive_unlocked(0);
|
||||||
|
}
|
||||||
|
return {0, nullptr};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user