- void send(m_task_t task, const char *dest);
- void send(m_task_t task, const std::string& dest);
- m_task_t recv();
- int sent_count();
+ // Start to listen for incoming messages
+ void listen();
+
+ // Send a message to the "dest" mailbox
+ void send(const char* dest, message* msg);
+
+ // Try to receive a message. Returns true on success.
+ // If "wait" is true, blocks until success or error.
+ bool recv(message*& msg, m_host_t& from, bool wait);
+
+ // Try to flush pending sending communications.
+ // If "wait" is true, blocks until success.
+ void flush(bool wait);
+
+ // Advertise that the next "close" message is the last one, and
+ // that we do not await any message after that, either on the
+ // control or the data channel.
+ void next_close_on_ctrl_is_last();
+ void next_close_on_data_is_last();