X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/dfe8486473094c0769fd1922329c3f0dfd8f43c0..46fb2b4bbe3a0a8516ab04cfafa895a882c70f86:/rpc/fifo.h diff --git a/rpc/fifo.h b/rpc/fifo.h index 93a79cf..215ec5b 100644 --- a/rpc/fifo.h +++ b/rpc/fifo.h @@ -1,27 +1,26 @@ #ifndef fifo_h #define fifo_h -#include -#include "lock.h" +#include "types.h" // blocks enq() and deq() when queue is FULL or EMPTY template class fifo { public: - fifo(int limit=0) : max_(limit) {}; + fifo(size_t limit=0) : max_(limit) {} bool enq(T, bool blocking=true); void deq(T *); bool size() { lock ml(m_); return q_.size(); - }; + } private: - std::list q_; + list q_; mutex m_; cond non_empty_c_; // q went non-empty cond has_space_c_; // q is not longer overfull - unsigned int max_; // maximum capacity of the queue, block enq threads if exceeds this limit + size_t max_; // maximum capacity of the queue, block enq threads if exceeds this limit }; template bool