← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3393: Make Client::state atomic

 

------------------------------------------------------------
revno: 3393
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Tue 2014-01-21 23:52:40 +0100
message:
  Make Client::state atomic
modified:
  dcpp/Client.cpp
  dcpp/Client.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/Client.cpp'
--- dcpp/Client.cpp	2013-07-31 21:46:23 +0000
+++ dcpp/Client.cpp	2014-01-21 22:52:40 +0000
@@ -192,6 +192,11 @@
 		sock->disconnect(graceLess);
 }
 
+bool Client::isConnected() const {
+	State s = state;
+	return s != STATE_CONNECTING && s != STATE_DISCONNECTED;
+}
+
 bool Client::isSecure() const {
 	return isConnected() && sock->isSecure();
 }

=== modified file 'dcpp/Client.h'
--- dcpp/Client.h	2013-11-17 16:15:01 +0000
+++ dcpp/Client.h	2014-01-21 22:52:40 +0000
@@ -64,7 +64,7 @@
 	virtual void emulateCommand(const string& cmd) = 0;
 	virtual void send(const AdcCommand& command) = 0;
 
-	bool isConnected() const { return state != STATE_CONNECTING && state != STATE_DISCONNECTED; }
+	bool isConnected() const;
 	bool isSecure() const;
 	bool isTrusted() const;
 	std::string getCipherName() const;
@@ -132,14 +132,15 @@
 
 	static atomic<long> counts[COUNT_UNCOUNTED];
 
-	enum States {
+	enum State {
 		STATE_CONNECTING,	///< Waiting for socket to connect
 		STATE_PROTOCOL,		///< Protocol setup
 		STATE_IDENTIFY,		///< Nick setup
 		STATE_VERIFY,		///< Checking password
 		STATE_NORMAL,		///< Running
 		STATE_DISCONNECTED,	///< Nothing in particular
-	} state;
+	};
+	atomic<State> state;
 
 	BufferedSocket *sock;