36 #ifndef _OBJECT_POOL_HPP_INCLUDED
37 #define _OBJECT_POOL_HPP_INCLUDED
42 #include <boost/thread/mutex.hpp>
43 #include <boost/thread/condition_variable.hpp>
52 :std::runtime_error(
"object pool exception"){}
58 template <
typename objectType >
64 boost::lock_guard<boost::mutex> lock(
m_mutex );
66 throw std::runtime_error(
"ObjectPool not empty at destruction" );
73 boost::unique_lock<boost::mutex> lock(
m_mutex );
86 boost::system_time absTime = boost::get_system_time()
87 + boost::posix_time::seconds(
m_timeout );
89 if ( !
m_cond.timed_wait( lock, absTime ))
94 throw std::logic_error(
"Logic error #1 in ObjectPool" );
97 void add( objectType obj ) {
98 boost::lock_guard<boost::mutex> lock(
m_mutex );
119 #endif // _OBJECT_POOL_HPP_INCLUDED
static void static_add(ObjectPool *pool, objectType obj)
Definition: objectPool.hpp:103
std::vector< objectType > m_availList
list (vector really) of available objects
Definition: objectPool.hpp:111
ObjectPool(const unsigned to)
Definition: objectPool.hpp:61
ObjectPool()
Definition: objectPool.hpp:62
Timeout exception for object pool.
Definition: objectPool.hpp:48
boost::condition_variable m_cond
the condition variable
Definition: objectPool.hpp:113
void add(objectType obj)
Definition: objectPool.hpp:97
unsigned timeout() const
Definition: objectPool.hpp:108
~ObjectPool()
Definition: objectPool.hpp:63
unsigned m_timeout
acquire timeout
Definition: objectPool.hpp:114
boost::mutex m_mutex
condition variable associated mutex
Definition: objectPool.hpp:112
void timeout(unsigned to)
Definition: objectPool.hpp:109
std::size_t available() const
Definition: objectPool.hpp:69
ObjectPoolTimeout()
Definition: objectPool.hpp:51
Class represening a pool of objects.
Definition: objectPool.hpp:59