From ee7c1b0ea8bd9483add1f8b06d5b6f745f1cfe27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Tue, 13 Oct 2009 18:14:26 +0200
Subject: Refactored some degenerate stuff out of base Session.


diff --git a/Swiften/Client/ClientSession.cpp b/Swiften/Client/ClientSession.cpp
index ae98ee6..a0e1289 100644
--- a/Swiften/Client/ClientSession.cpp
+++ b/Swiften/Client/ClientSession.cpp
@@ -115,7 +115,7 @@ void ClientSession::handleElement(boost::shared_ptr<Element> element) {
 			}
 			else {
 				state_ = SessionStarted;
-				setInitialized();
+				onSessionStarted();
 			}
 		}
 	}
@@ -171,7 +171,7 @@ void ClientSession::handleElement(boost::shared_ptr<Element> element) {
 		else if (state_ == StartingSession) {
 			if (iq->getType() == IQ::Result) {
 				state_ = SessionStarted;
-				setInitialized();
+				onSessionStarted();
 			}
 			else if (iq->getType() == IQ::Error) {
 				finishSession(SessionStartError);
@@ -187,7 +187,7 @@ void ClientSession::handleElement(boost::shared_ptr<Element> element) {
 	else {
 		// FIXME Not correct?
 		state_ = SessionStarted;
-		setInitialized();
+		onSessionStarted();
 	}
 }
 
diff --git a/Swiften/Client/ClientSession.h b/Swiften/Client/ClientSession.h
index cb1e098..fead182 100644
--- a/Swiften/Client/ClientSession.h
+++ b/Swiften/Client/ClientSession.h
@@ -74,6 +74,7 @@ namespace Swift {
 
 		public:
 			boost::signal<void ()> onNeedCredentials;
+			boost::signal<void ()> onSessionStarted;
 		
 		private:
 			TLSLayerFactory* tlsLayerFactory_;
diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp b/Swiften/LinkLocal/IncomingLinkLocalSession.cpp
index a1fb901..4c3a681 100644
--- a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp
+++ b/Swiften/LinkLocal/IncomingLinkLocalSession.cpp
@@ -18,7 +18,8 @@ IncomingLinkLocalSession::IncomingLinkLocalSession(
 		boost::shared_ptr<Connection> connection, 
 		PayloadParserFactoryCollection* payloadParserFactories, 
 		PayloadSerializerCollection* payloadSerializers) :
-			Session(connection, payloadParserFactories, payloadSerializers) {
+			Session(connection, payloadParserFactories, payloadSerializers),
+			initialized(false) {
 	setLocalJID(localJID);
 }
 
@@ -52,5 +53,11 @@ void IncomingLinkLocalSession::handleElement(boost::shared_ptr<Element> element)
 	onElementReceived(element);
 }
 
+void IncomingLinkLocalSession::setInitialized() {
+	initialized = true;
+	onSessionStarted();
+}
+
+
 
 }
diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.h b/Swiften/LinkLocal/IncomingLinkLocalSession.h
index 2f1a45b..e3f0460 100644
--- a/Swiften/LinkLocal/IncomingLinkLocalSession.h
+++ b/Swiften/LinkLocal/IncomingLinkLocalSession.h
@@ -22,8 +22,16 @@ namespace Swift {
 					PayloadParserFactoryCollection* payloadParserFactories, 
 					PayloadSerializerCollection* payloadSerializers);
 
+			boost::signal<void ()> onSessionStarted;
+
 		private:
 			void handleElement(boost::shared_ptr<Element>);
 			void handleStreamStart(const ProtocolHeader&);
+			void setInitialized();
+			bool isInitialized() const { 
+				return initialized; 
+			}
+
+			bool initialized;
 	};
 }
diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp
index 1c2fefb..7b71f82 100644
--- a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp
+++ b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp
@@ -31,7 +31,6 @@ void OutgoingLinkLocalSession::handleStreamStart(const ProtocolHeader&) {
 		sendElement(stanza);
 	}
 	queuedElements_.clear();
-	setInitialized();
 }
 
 void OutgoingLinkLocalSession::handleElement(boost::shared_ptr<Element> element) {
diff --git a/Swiften/Server/ServerFromClientSession.cpp b/Swiften/Server/ServerFromClientSession.cpp
index 3efacd7..c974e18 100644
--- a/Swiften/Server/ServerFromClientSession.cpp
+++ b/Swiften/Server/ServerFromClientSession.cpp
@@ -26,7 +26,8 @@ ServerFromClientSession::ServerFromClientSession(
 			Session(connection, payloadParserFactories, payloadSerializers),
 			id_(id),
 			userRegistry_(userRegistry),
-			authenticated_(false) {
+			authenticated_(false),
+			initialized(false) {
 }
 
 
@@ -87,4 +88,10 @@ void ServerFromClientSession::handleStreamStart(const ProtocolHeader& incomingHe
 	getXMPPLayer()->writeElement(features);
 }
 
+void ServerFromClientSession::setInitialized() {
+	initialized = true;
+	onSessionStarted();
+}
+
+
 }
diff --git a/Swiften/Server/ServerFromClientSession.h b/Swiften/Server/ServerFromClientSession.h
index 748f7eb..33826a4 100644
--- a/Swiften/Server/ServerFromClientSession.h
+++ b/Swiften/Server/ServerFromClientSession.h
@@ -31,14 +31,22 @@ namespace Swift {
 					PayloadSerializerCollection* payloadSerializers,
 					UserRegistry* userRegistry);
 
+			boost::signal<void ()> onSessionStarted;
+
 		private:
 			void handleElement(boost::shared_ptr<Element>);
 			void handleStreamStart(const ProtocolHeader& header);
 
+			void setInitialized();
+			bool isInitialized() const { 
+				return initialized; 
+			}
+
 		private:
 			String id_;
 			UserRegistry* userRegistry_;
 			bool authenticated_;
+			bool initialized;
 			String user_;
 	};
 }
diff --git a/Swiften/Session/Session.cpp b/Swiften/Session/Session.cpp
index 6f528c1..64456db 100644
--- a/Swiften/Session/Session.cpp
+++ b/Swiften/Session/Session.cpp
@@ -15,7 +15,6 @@ Session::Session(
 			payloadParserFactories(payloadParserFactories),
 			payloadSerializers(payloadSerializers),
 			streamStack(0),
-			initialized(false),
 			finishing(false) {
 }
 
@@ -80,9 +79,4 @@ void Session::handleDisconnected(const boost::optional<Connection::Error>& conne
 	}
 }
 
-void Session::setInitialized() {
-	initialized = true;
-	onSessionStarted();
-}
-
 }
diff --git a/Swiften/Session/Session.h b/Swiften/Session/Session.h
index 26d10c1..d63254a 100644
--- a/Swiften/Session/Session.h
+++ b/Swiften/Session/Session.h
@@ -44,6 +44,7 @@ namespace Swift {
 
 			void startSession();
 			void finishSession();
+
 			void sendElement(boost::shared_ptr<Element>);
 
 			const JID& getLocalJID() const {
@@ -55,19 +56,16 @@ namespace Swift {
 			}
 
 			boost::signal<void (boost::shared_ptr<Element>)> onElementReceived;
-			boost::signal<void ()> onSessionStarted;
 			boost::signal<void (const boost::optional<SessionError>&)> onSessionFinished;
 			boost::signal<void (const ByteArray&)> onDataWritten;
 			boost::signal<void (const ByteArray&)> onDataRead;
 
 		protected:
 			void setRemoteJID(const JID& j) {
-				assert(!isInitialized());
 				remoteJID = j;
 			}
 
 			void setLocalJID(const JID& j) {
-				assert(!isInitialized());
 				localJID = j;
 			}
 
@@ -88,11 +86,6 @@ namespace Swift {
 				return streamStack;
 			}
 
-			void setInitialized();
-			bool isInitialized() const { 
-				return initialized; 
-			}
-
 			void setFinished();
 
 		private:
@@ -107,7 +100,6 @@ namespace Swift {
 			boost::shared_ptr<XMPPLayer> xmppLayer;
 			boost::shared_ptr<ConnectionLayer> connectionLayer;
 			StreamStack* streamStack;
-			bool initialized;
 			bool finishing;
 	};
 }
-- 
cgit v0.10.2-6-g49f6