summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/StreamStack/WhitespacePingLayer.cpp')
-rw-r--r--Swiften/StreamStack/WhitespacePingLayer.cpp39
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;
}
}