00001 #ifndef _AutoDelete_
00002 #define _AutoDelete_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <iostream>
00024 #include <queue>
00025 #include "qpid/sys/Monitor.h"
00026 #include "BrokerQueue.h"
00027 #include "QueueRegistry.h"
00028 #include "qpid/sys/Thread.h"
00029
00030 namespace qpid {
00031 namespace broker{
00032 class AutoDelete : private qpid::sys::Runnable {
00033 qpid::sys::Mutex lock;
00034 qpid::sys::Monitor monitor;
00035 std::queue<Queue::shared_ptr> queues;
00036 QueueRegistry* const registry;
00037 uint32_t period;
00038 volatile bool stopped;
00039 qpid::sys::Thread runner;
00040
00041 Queue::shared_ptr const pop();
00042 void process();
00043 virtual void run();
00044
00045 public:
00046 AutoDelete(QueueRegistry* const registry, uint32_t period);
00047 void add(Queue::shared_ptr const);
00048 void start();
00049 void stop();
00050 };
00051 }
00052 }
00053
00054
00055 #endif