summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network/BoostTimer.h')
-rw-r--r--Swiften/Network/BoostTimer.h54
1 files changed, 31 insertions, 23 deletions
diff --git a/Swiften/Network/BoostTimer.h b/Swiften/Network/BoostTimer.h
index bfe631b..68ae28c 100644
--- a/Swiften/Network/BoostTimer.h
+++ b/Swiften/Network/BoostTimer.h
@@ -1,41 +1,49 @@
/*
- * Copyright (c) 2010 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
+ * Copyright (c) 2010-2016 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
*/
#pragma once
-#include <boost/asio/io_service.hpp>
+#include <memory>
+#include <mutex>
+
#include <boost/asio/deadline_timer.hpp>
-#include <boost/enable_shared_from_this.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <Swiften/Base/API.h>
#include <Swiften/EventLoop/EventOwner.h>
#include <Swiften/Network/Timer.h>
namespace Swift {
- class EventLoop;
+ class EventLoop;
+
+ class SWIFTEN_API BoostTimer : public Timer, public EventOwner, public std::enable_shared_from_this<BoostTimer> {
+ public:
+ typedef std::shared_ptr<BoostTimer> ref;
- class BoostTimer : public Timer, public EventOwner, public boost::enable_shared_from_this<BoostTimer> {
- public:
- typedef boost::shared_ptr<BoostTimer> ref;
+ virtual ~BoostTimer();
- static ref create(int milliseconds, boost::shared_ptr<boost::asio::io_service> service, EventLoop* eventLoop) {
- return ref(new BoostTimer(milliseconds, service, eventLoop));
- }
+ static ref create(int milliseconds, std::shared_ptr<boost::asio::io_service> service, EventLoop* eventLoop) {
+ return ref(new BoostTimer(milliseconds, service, eventLoop));
+ }
- virtual void start();
- virtual void stop();
+ virtual void start();
+ virtual void stop();
- private:
- BoostTimer(int milliseconds, boost::shared_ptr<boost::asio::io_service> service, EventLoop* eventLoop);
+ private:
+ BoostTimer(int milliseconds, std::shared_ptr<boost::asio::io_service> service, EventLoop* eventLoop);
- void handleTimerTick(const boost::system::error_code& error);
+ void handleTimerTick(const boost::system::error_code& error);
- private:
- int timeout;
- boost::shared_ptr<boost::asio::io_service> ioService;
- boost::asio::deadline_timer timer;
- EventLoop* eventLoop;
- };
+ private:
+ int timeout;
+ std::shared_ptr<boost::asio::io_service> ioService;
+ boost::scoped_ptr<boost::asio::deadline_timer> timer;
+ std::mutex timerMutex;
+ EventLoop* eventLoop;
+ bool shuttingDown;
+ };
}