- // 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);
+ // Returns true if there remains neighbors to listen for
+ bool may_receive() { return ctrl_close_pending || data_close_pending; }
+
+ // Receive procedure
+ // Parameter "timeout" may be 0 for non-blocking operation, -1 for
+ // infinite waiting, or any positive timeout.
+ void receive(double timeout);