+
+ // Receive procedure: wait (or not) for a message to come.
+ // Returns false if some "close" message was received, returns true
+ // otherwise.
+ enum recv_wait_mode { NO_WAIT = 0, WAIT, WAIT_FOR_CLOSE };
+ bool receive(recv_wait_mode wait);
+
+ // Finalize sends a "close" message to each neighbor and wait for
+ // all of them to answer.