summaryrefslogtreecommitdiff
path: root/src/ypipe.hpp
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@fastmq.commkdir>2009-09-30 10:08:35 +0200
committerMartin Sustrik <sustrik@fastmq.commkdir>2009-09-30 10:08:35 +0200
commitf2ff2c6e5c4e244dea28e1ac6ec3f886b7ebc356 (patch)
tree33ff7bf025d8bbb3afc8d4cb83f5613ebb956300 /src/ypipe.hpp
parent84d854a088d27b642355d4e835a2d93e405452ae (diff)
checking for available messages added to ypipe/pipe
Diffstat (limited to 'src/ypipe.hpp')
-rw-r--r--src/ypipe.hpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/ypipe.hpp b/src/ypipe.hpp
index 6c51b63..0a9b5d5 100644
--- a/src/ypipe.hpp
+++ b/src/ypipe.hpp
@@ -106,16 +106,12 @@ namespace zmq
return true;
}
- // Reads an item from the pipe. Returns false if there is no value.
- // available.
- inline bool read (T *value_)
+ // Check whether item is available for reading.
+ inline bool check_read ()
{
- // Was the value prefetched already? If so, return it.
- if (&queue.front () != r) {
- *value_ = queue.front ();
- queue.pop ();
+ // Was the value prefetched already? If so, return.
+ if (&queue.front () != r)
return true;
- }
// There's no prefetched value, so let us prefetch more values.
// (Note that D is a template parameter. Becaue of that one of
@@ -166,6 +162,18 @@ namespace zmq
}
// There was at least one value prefetched.
+ return true;
+ }
+
+ // Reads an item from the pipe. Returns false if there is no value.
+ // available.
+ inline bool read (T *value_)
+ {
+ // Try to prefetch a value.
+ if (!check_read ())
+ return false;
+
+ // There was at least one value prefetched.
// Return it to the caller.
*value_ = queue.front ();
queue.pop ();