8 #include <mapbox/std/weak.hpp>
15 class Mailbox :
public std::enable_shared_from_this<Mailbox> {
34 void push(std::unique_ptr<Message>);
38 static std::function<void()>
makeClosure(std::weak_ptr<Mailbox>);
41 mapbox::base::WeakPtr<Scheduler> weakScheduler;
43 std::recursive_mutex receivingMutex;
44 std::mutex pushingMutex;
46 bool closed {
false };
48 std::mutex queueMutex;
49 std::queue<std::unique_ptr<Message>> queue;
static std::function< void()> makeClosure(std::weak_ptr< Mailbox >)
void open(Scheduler &scheduler_)
void push(std::unique_ptr< Message >)
static void maybeReceive(const std::weak_ptr< Mailbox > &)