00001 #ifndef _APRPool_
00002 #define _APRPool_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <boost/noncopyable.hpp>
00025 #include <apr_pools.h>
00026 #include <apr_thread_mutex.h>
00027 #include <stack>
00028
00029 namespace qpid {
00030 namespace sys {
00034 class APRPool : private boost::noncopyable {
00035 public:
00036 APRPool();
00037 ~APRPool();
00038
00039 apr_pool_t* allocate_pool();
00040
00041 void free_pool(apr_pool_t* pool);
00042
00044 static apr_pool_t* get();
00045
00047 static void free(apr_pool_t* pool);
00048
00049 private:
00050 apr_pool_t* pool;
00051 apr_thread_mutex_t* poolGuard;
00052 std::stack<apr_pool_t*>* allocated_pools;
00053 };
00054
00055 }}
00056
00057
00058
00059
00060
00061 #endif