summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2015-03-08 15:36:49 (GMT)
committerKevin Smith <kevin.smith@isode.com>2015-05-01 17:14:55 (GMT)
commit794fec2873e69ec047974416768b32b69754dad1 (patch)
treea3cc8cb221e9ee7ad5c40a9de0ccc03e5f9d9562 /Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp
parentd7bc3a37f4bb261c8520a8ddedcda2369f97361c (diff)
downloadswift-794fec2873e69ec047974416768b32b69754dad1.zip
swift-794fec2873e69ec047974416768b32b69754dad1.tar.bz2
Add resource management for S5B server and port forwardings
This patchs adds management of the SOCKS5 bytestream server and port forwarding setup to Swiften. The first file-transfer, regardless of incoming or outgoing transfer, will start and initialize the S5B server and if configured try to set up port forwarding. The last file-transfer to finish will will close the server and remove the port forwarding. Test-Information: Tested with upcoming ConcurrentFileTransferTest.cpp and running multiple S5B file-transfers in parallel. Change-Id: Idd09d3d0ef9498fc9435b0aee81f2b1061783342
Diffstat (limited to 'Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp')
-rw-r--r--Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp b/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp
new file mode 100644
index 0000000..bf7d4e8
--- /dev/null
+++ b/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
+#include <Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.h>
+
+#include <Swiften/FileTransfer/SOCKS5BytestreamServerManager.h>
+
+#include <boost/bind.hpp>
+
+namespace Swift {
+
+SOCKS5BytestreamServerResourceUser::SOCKS5BytestreamServerResourceUser(SOCKS5BytestreamServerManager* s5bServerManager) : s5bServerManager_(s5bServerManager) {
+ assert(!s5bServerManager_->isInitialized());
+ s5bServerManager_->onInitialized.connect(boost::bind(&SOCKS5BytestreamServerResourceUser::handleServerManagerInitialized, this, _1));
+ s5bServerManager_->initialize();
+}
+
+SOCKS5BytestreamServerResourceUser::~SOCKS5BytestreamServerResourceUser() {
+ if (s5bServerManager_->isInitialized()) {
+ s5bServerManager_->stop();
+ }
+}
+
+bool SOCKS5BytestreamServerResourceUser::isInitialized() const {
+ return s5bServerManager_->isInitialized();
+}
+
+void SOCKS5BytestreamServerResourceUser::handleServerManagerInitialized(bool successfulInitialize) {
+ onSuccessfulInitialized(successfulInitialize);
+}
+
+}