diff options
Diffstat (limited to 'Swiften/StreamStack/WhitespacePingLayer.cpp')
-rw-r--r-- | Swiften/StreamStack/WhitespacePingLayer.cpp | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/Swiften/StreamStack/WhitespacePingLayer.cpp b/Swiften/StreamStack/WhitespacePingLayer.cpp index b14f3a2..7c8301e 100644 --- a/Swiften/StreamStack/WhitespacePingLayer.cpp +++ b/Swiften/StreamStack/WhitespacePingLayer.cpp @@ -1,47 +1,56 @@ /* - * 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-2019 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #include <Swiften/StreamStack/WhitespacePingLayer.h> #include <boost/bind.hpp> -#include <Swiften/Network/TimerFactory.h> +#include <Swiften/Base/Log.h> #include <Swiften/Network/Timer.h> +#include <Swiften/Network/TimerFactory.h> namespace Swift { static const int TIMEOUT_MILLISECONDS = 60000; WhitespacePingLayer::WhitespacePingLayer(TimerFactory* timerFactory) : isActive(false) { - timer = timerFactory->createTimer(TIMEOUT_MILLISECONDS); - timer->onTick.connect(boost::bind(&WhitespacePingLayer::handleTimerTick, this)); + timer = timerFactory->createTimer(TIMEOUT_MILLISECONDS); + timer->onTick.connect(boost::bind(&WhitespacePingLayer::handleTimerTick, this)); +} + +WhitespacePingLayer::~WhitespacePingLayer() { + SWIFT_LOG_ASSERT(!isActive, debug) << "WhitespacePingLayer still active at destruction."; + if (isActive) { + timer->stop(); + } + timer->onTick.disconnect(boost::bind(&WhitespacePingLayer::handleTimerTick, this)); } void WhitespacePingLayer::writeData(const SafeByteArray& data) { - writeDataToChildLayer(data); + writeDataToChildLayer(data); } void WhitespacePingLayer::handleDataRead(const SafeByteArray& data) { - writeDataToParentLayer(data); + writeDataToParentLayer(data); } void WhitespacePingLayer::handleTimerTick() { - timer->stop(); - writeDataToChildLayer(createSafeByteArray(" ")); - timer->start(); + timer->stop(); + writeDataToChildLayer(createSafeByteArray(" ")); + timer->start(); } void WhitespacePingLayer::setActive() { - isActive = true; - timer->start(); + isActive = true; + timer->start(); } void WhitespacePingLayer::setInactive() { - timer->stop(); - isActive = false; + timer->stop(); + isActive = false; } } |