summaryrefslogtreecommitdiff
path: root/src/mailbox.hpp
diff options
context:
space:
mode:
authorFabien Ninoles <fabien@tzone.org>2011-06-20 08:14:21 +0200
committerMartin Sustrik <sustrik@250bpm.com>2011-06-20 08:14:21 +0200
commit7572fee979a1cc2a874dd5621c89a0e849b65816 (patch)
tree20a4bc18ed480346d8e6b5fd3950a055233ce141 /src/mailbox.hpp
parent8440de2b14876ecc6b39816528ef0793c6e34598 (diff)
Optimise block/non-block switching in mailbox_t
For the platforms that don't support MSG_DONTWAIT the reader socket in mailbox_t was kept in non-blocking state and flipped to blocking state and back when blocking read was requested. Now, the state is preserved between calls and flipped only if different type of operation (block vs. non-block) is requested. Signed-off-by: Fabien Ninoles <fabien@tzone.org> Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'src/mailbox.hpp')
-rw-r--r--src/mailbox.hpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mailbox.hpp b/src/mailbox.hpp
index 1b54aac..eb02e39 100644
--- a/src/mailbox.hpp
+++ b/src/mailbox.hpp
@@ -45,10 +45,6 @@ namespace zmq
private:
- // Write & read end of the socketpair.
- fd_t w;
- fd_t r;
-
// Platform-dependent function to create a socketpair.
static int make_socketpair (fd_t *r_, fd_t *w_);
@@ -57,6 +53,14 @@ namespace zmq
// blocking recvs.
int recv_timeout (command_t *cmd_, int timeout_);
+ // Write & read end of the socketpair.
+ fd_t w;
+ fd_t r;
+
+ // Used on platforms where there's no MSG_DONTWAIT functionality.
+ // True if the read socket is set to the blocking state.
+ bool blocking;
+
// Disable copying of mailbox_t object.
mailbox_t (const mailbox_t&);
const mailbox_t &operator = (const mailbox_t&);