X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Frbd_replay%2FBoundedBuffer.hpp;fp=src%2Fceph%2Fsrc%2Frbd_replay%2FBoundedBuffer.hpp;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=e4df483c1f67301080f005e4b3a2f68623651a93;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/rbd_replay/BoundedBuffer.hpp b/src/ceph/src/rbd_replay/BoundedBuffer.hpp deleted file mode 100644 index e4df483..0000000 --- a/src/ceph/src/rbd_replay/BoundedBuffer.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#ifndef _INCLUDED_BOUNDED_BUFFER_HPP -#define _INCLUDED_BOUNDED_BUFFER_HPP - -#include -#include -#include -#include - -/** - Blocking, fixed-capacity, thread-safe FIFO queue useful for communicating between threads. - This code was taken from the Boost docs: http://www.boost.org/doc/libs/1_55_0/libs/circular_buffer/example/circular_buffer_bound_example.cpp - */ -template -class BoundedBuffer { -public: - typedef boost::circular_buffer container_type; - typedef typename container_type::size_type size_type; - typedef typename container_type::value_type value_type; - typedef typename boost::call_traits::param_type param_type; - - explicit BoundedBuffer(size_type capacity) : m_unread(0), m_container(capacity) { - } - - /** - Inserts an element into the queue. - Blocks if the queue is full. - */ - void push_front(typename boost::call_traits::param_type item) { - // `param_type` represents the "best" way to pass a parameter of type `value_type` to a method. - boost::mutex::scoped_lock lock(m_mutex); - m_not_full.wait(lock, boost::bind(&BoundedBuffer::is_not_full, this)); - m_container.push_front(item); - ++m_unread; - lock.unlock(); - m_not_empty.notify_one(); - } - - /** - Removes an element from the queue. - Blocks if the queue is empty. - */ - void pop_back(value_type* pItem) { - boost::mutex::scoped_lock lock(m_mutex); - m_not_empty.wait(lock, boost::bind(&BoundedBuffer::is_not_empty, this)); - *pItem = m_container[--m_unread]; - lock.unlock(); - m_not_full.notify_one(); - } - -private: - BoundedBuffer(const BoundedBuffer&); // Disabled copy constructor. - BoundedBuffer& operator= (const BoundedBuffer&); // Disabled assign operator. - - bool is_not_empty() const { - return m_unread > 0; - } - bool is_not_full() const { - return m_unread < m_container.capacity(); - } - - size_type m_unread; - container_type m_container; - boost::mutex m_mutex; - boost::condition m_not_empty; - boost::condition m_not_full; -}; - -#endif