← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2227: Add atomic to UPnPManager, too

 

------------------------------------------------------------
revno: 2227
committer: eMTee <emtee11@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Wed 2010-09-01 17:07:18 +0200
message:
  Add atomic to UPnPManager, too
modified:
  dcpp/ConnectivityManager.h
  dcpp/UPnPManager.cpp
  dcpp/UPnPManager.h


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/ConnectivityManager.h'
--- dcpp/ConnectivityManager.h	2010-08-30 20:49:35 +0000
+++ dcpp/ConnectivityManager.h	2010-09-01 15:07:18 +0000
@@ -41,7 +41,6 @@
 {
 public:
 	void detectConnection();
-	void log(const string& msg);
 	void setup(bool settingsChanged, int lastConnectionMode);
 	bool isRunning() { return running; }
 
@@ -53,6 +52,8 @@
 	virtual ~ConnectivityManager() throw() { }
 
 	void mappingFinished(bool success);
+	void log(const string& msg);
+
 	void startSocket();
 	void listen();
 	void disconnect();

=== modified file 'dcpp/UPnPManager.cpp'
--- dcpp/UPnPManager.cpp	2010-08-30 20:49:35 +0000
+++ dcpp/UPnPManager.cpp	2010-09-01 15:07:18 +0000
@@ -42,7 +42,7 @@
 		return false;
 	}
 
-	if(Thread::safeExchange(portMapping, 1) == 1) {
+	if(portMapping.test_and_set()) {
 		log(_("Another UPnP port mapping attempt is in progress..."));
 		return false;
 	} 
@@ -108,7 +108,7 @@
 		ConnectivityManager::getInstance()->mappingFinished(false);
 	}
 
-	portMapping = 0;
+	portMapping.clear();
 	return 0;
 }
 

=== modified file 'dcpp/UPnPManager.h'
--- dcpp/UPnPManager.h	2010-08-30 20:49:35 +0000
+++ dcpp/UPnPManager.h	2010-09-01 15:07:18 +0000
@@ -24,6 +24,8 @@
 #include "Thread.h"
 #include "UPnP.h"
 
+#include <atomic>
+
 #include <boost/ptr_container/ptr_vector.hpp>
 
 namespace dcpp {
@@ -51,9 +53,9 @@
 	Impls impls;
 
 	bool opened;
-	volatile long portMapping;
+	atomic_flag portMapping;
 
-	UPnPManager() : opened(false) { }
+	UPnPManager() : opened(false), portMapping(false) { }
 	virtual ~UPnPManager() throw() { join(); }
 
 	int run();