diff options
Diffstat (limited to 'qpid/cpp/src/qpid/sys')
-rw-r--r-- | qpid/cpp/src/qpid/sys/PeriodicTimer.h | 56 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/PeriodicTimerImpl.cpp | 49 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/PeriodicTimerImpl.h | 48 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/sys/PollableQueue.h | 2 |
4 files changed, 1 insertions, 154 deletions
diff --git a/qpid/cpp/src/qpid/sys/PeriodicTimer.h b/qpid/cpp/src/qpid/sys/PeriodicTimer.h deleted file mode 100644 index 290ffb6218..0000000000 --- a/qpid/cpp/src/qpid/sys/PeriodicTimer.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef QPID_SYS_PERIODICTIMER_H -#define QPID_SYS_PERIODICTIMER_H - -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 "Timer.h" -#include <boost/function.hpp> - -namespace qpid { -namespace sys { - -/** - * Interface of a timer for periodic tasks that should be synchronized - * across all brokers in a periodic. The standalone broker - * implementation simply wraps qpid::sys::Timer. The clustered broker - * implementation synchronizes execution of periodic tasks on all - * periodic members. - */ -class PeriodicTimer -{ - public: - typedef boost::function<void()> Task; - - QPID_COMMON_EXTERN virtual ~PeriodicTimer() {} - - /** - * Add a named task to be executed at the given period. - * - * The task registered under the same name will be executed on - * all brokers at the given period. - */ - virtual void add(const Task& task, Duration period, const std::string& taskName) = 0; - -}; -}} // namespace qpid::sys - -#endif /*!QPID_SYS_PERIODICTIMER_H*/ diff --git a/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.cpp b/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.cpp deleted file mode 100644 index e2a6dccf3e..0000000000 --- a/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 "PeriodicTimerImpl.h" - -namespace qpid { -namespace sys { - -PeriodicTimerImpl::PeriodicTimerImpl(Timer& t) : timer(t) {} - -struct PeriodicTimerImpl::TaskImpl : public TimerTask { - Timer& timer; - Task task; - - TaskImpl(Timer& timer_, const Task& task_, Duration period) : - TimerTask(period), timer(timer_), task(task_) {} - - void fire() { - task(); - setupNextFire(); - timer.add(this); - } -}; - -void PeriodicTimerImpl::add( - const Task& task, Duration period, const std::string& /*taskName*/ -) -{ - timer.add(new TaskImpl(timer, task, period)); -} - -}} // namespace qpid::sys diff --git a/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.h b/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.h deleted file mode 100644 index 3fc9396f01..0000000000 --- a/qpid/cpp/src/qpid/sys/PeriodicTimerImpl.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef QPID_SYS_PERIODICTIMERIMPL_H -#define QPID_SYS_PERIODICTIMERIMPL_H - -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 "PeriodicTimer.h" -#include "qpid/CommonImportExport.h" - -namespace qpid { -namespace sys { - -/** - * Standalone broker implementation of PeriodicTimer. - */ -class PeriodicTimerImpl : public PeriodicTimer -{ - public: - QPID_COMMON_EXTERN PeriodicTimerImpl(Timer& timer); - QPID_COMMON_EXTERN void add(const Task& task, - Duration period, - const std::string& taskName); - - private: - struct TaskImpl; - Timer& timer; -}; -}} // namespace qpid::sys - -#endif /*!QPID_SYS_PERIODICTIMER_H*/ diff --git a/qpid/cpp/src/qpid/sys/PollableQueue.h b/qpid/cpp/src/qpid/sys/PollableQueue.h index 0786b21610..cb8c126fe6 100644 --- a/qpid/cpp/src/qpid/sys/PollableQueue.h +++ b/qpid/cpp/src/qpid/sys/PollableQueue.h @@ -126,7 +126,7 @@ template <class T> PollableQueue<T>::~PollableQueue() { template <class T> void PollableQueue<T>::push(const T& t) { ScopedLock l(lock); - if (queue.empty()) condition.set(); + if (queue.empty() && !stopped) condition.set(); queue.push_back(t); } |