Lines Matching refs:waiter
118 void ChannelDispatcher::RemoveWaiter(MessageWaiter* waiter) {
120 if (!waiter->InContainer()) {
123 waiters_.erase(*waiter);
132 // Remove waiter from list.
134 auto waiter = waiters_.pop_front();
135 waiter->Cancel(ZX_ERR_CANCELED);
150 // Remove waiter from list.
152 auto waiter = waiters_.pop_front();
153 waiter->Cancel(ZX_ERR_PEER_CLOSED);
208 auto waiter = ThreadDispatcher::GetCurrent()->GetMessageWaiter();
209 if (unlikely(waiter->BeginWait(fbl::WrapRefPtr(this)) != ZX_OK)) {
222 waiter->EndWait(reply);
234 // the waiter list is most commonly empty.
235 for (auto& waiter: waiters_) {
236 if (waiter.get_txid() == txid) {
241 // Install our txid in the waiter and the outbound message
242 waiter->set_txid(txid);
246 // waiter to the list.
247 waiters_.push_back(waiter);
255 return ResumeInterruptedCall(waiter, deadline, reply);
258 zx_status_t ChannelDispatcher::ResumeInterruptedCall(MessageWaiter* waiter,
263 // (2) Wait for notification via waiter's event or for the
268 zx_status_t status = waiter->Wait(deadline);
271 // do not clear the waiter.
277 // the waiter could be signaled and removed from the list.
279 // If the deadline hits, the waiter is not removed
289 // is our job to remove the waiter from the list.
290 zx_status_t status = waiter->EndWait(reply);
292 waiters_.erase(*waiter);
309 for (auto& waiter: waiters_) {
310 // (3C) Deliver message to waiter.
311 // Remove waiter from list.
312 if (waiter.get_txid() == txid) {
313 waiters_.erase(waiter);
314 waiter.Deliver(fbl::move(msg));