summaryrefslogtreecommitdiff
path: root/cpp/broker/src/AutoDelete.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/broker/src/AutoDelete.cpp')
-rw-r--r--cpp/broker/src/AutoDelete.cpp93
1 files changed, 0 insertions, 93 deletions
diff --git a/cpp/broker/src/AutoDelete.cpp b/cpp/broker/src/AutoDelete.cpp
deleted file mode 100644
index 6793ec449d..0000000000
--- a/cpp/broker/src/AutoDelete.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *
- * Copyright (c) 2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "AutoDelete.h"
-
-using namespace qpid::broker;
-
-AutoDelete::AutoDelete(QueueRegistry* const _registry, u_int32_t _period) : registry(_registry),
- period(_period),
- stopped(true),
- runner(0){}
-
-void AutoDelete::add(Queue::shared_ptr const queue){
- lock.acquire();
- queues.push(queue);
- lock.release();
-}
-
-Queue::shared_ptr const AutoDelete::pop(){
- Queue::shared_ptr next;
- lock.acquire();
- if(!queues.empty()){
- next = queues.front();
- queues.pop();
- }
- lock.release();
- return next;
-}
-
-void AutoDelete::process(){
- Queue::shared_ptr seen;
- for(Queue::shared_ptr q = pop(); q; q = pop()){
- if(seen == q){
- add(q);
- break;
- }else if(q->canAutoDelete()){
- std::string name(q->getName());
- registry->destroy(name);
- std::cout << "INFO: Auto-deleted queue named " << name << std::endl;
- }else{
- add(q);
- if(!seen) seen = q;
- }
- }
-}
-
-void AutoDelete::run(){
- monitor.acquire();
- while(!stopped){
- process();
- monitor.wait(period);
- }
- monitor.release();
-}
-
-void AutoDelete::start(){
- monitor.acquire();
- if(stopped){
- runner = factory.create(this);
- stopped = false;
- monitor.release();
- runner->start();
- }else{
- monitor.release();
- }
-}
-
-void AutoDelete::stop(){
- monitor.acquire();
- if(!stopped){
- stopped = true;
- monitor.notify();
- monitor.release();
- runner->join();
- delete runner;
- }else{
- monitor.release();
- }
-}