4#ifndef SYMBIAN_CONCURRENCY_EVENT_MAILBOX_H_
5#define SYMBIAN_CONCURRENCY_EVENT_MAILBOX_H_
12#include "absl/status/status.h"
31 absl::Status
Enqueue(std::function<
void()> callback) {
32 absl::Status status = queue_.
TryWrite(std::move(callback));
37 return absl::OkStatus();
46 std::vector<std::function<
void()>> ready;
50 for (std::size_t
i = 0;
i < count; ++
i) {
51 std::function<
void()> callback;
52 absl::StatusOr<bool>
read = queue_.
TryRead(&callback);
56 ready.push_back(std::move(callback));
58 for (
auto& callback : ready) {
72 std::function<
void()> wake_;
Definition bounded_channel.h:83
absl::StatusOr< bool > TryRead(T *out)
Definition bounded_channel.h:136
absl::Status TryWrite(T &&item)
Definition bounded_channel.h:97
std::size_t Size() const
Definition bounded_channel.h:191
void Discard()
Definition bounded_channel.h:180
Definition bounded_channel.h:38
Definition event_mailbox.h:20
std::size_t Pending() const
Definition event_mailbox.h:67
EventMailbox(const EventMailbox &)=delete
~EventMailbox()
Definition event_mailbox.h:29
void Close()
Definition event_mailbox.h:69
EventMailbox(std::function< void()> wake, std::size_t max_pending=128)
Definition event_mailbox.h:22
std::size_t DispatchReady(std::size_t budget=64)
Definition event_mailbox.h:42
EventMailbox & operator=(const EventMailbox &)=delete
absl::Status Enqueue(std::function< void()> callback)
Definition event_mailbox.h:31
Definition exception_count.cc:8
Definition bounded_channel.h:32