diff options
Diffstat (limited to 'Swiften/Session/Session.cpp')
m--------- | Swiften | 0 | ||||
-rw-r--r-- | Swiften/Session/Session.cpp | 82 |
2 files changed, 0 insertions, 82 deletions
diff --git a/Swiften b/Swiften new file mode 160000 +Subproject 8213ba16d0043d2461f4b031c881d61dda5a38c diff --git a/Swiften/Session/Session.cpp b/Swiften/Session/Session.cpp deleted file mode 100644 index 64456db..0000000 --- a/Swiften/Session/Session.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include "Swiften/Session/Session.h" - -#include <boost/bind.hpp> - -#include "Swiften/StreamStack/XMPPLayer.h" -#include "Swiften/StreamStack/StreamStack.h" - -namespace Swift { - -Session::Session( - boost::shared_ptr<Connection> connection, - PayloadParserFactoryCollection* payloadParserFactories, - PayloadSerializerCollection* payloadSerializers) : - connection(connection), - payloadParserFactories(payloadParserFactories), - payloadSerializers(payloadSerializers), - streamStack(0), - finishing(false) { -} - -Session::~Session() { - delete streamStack; -} - -void Session::startSession() { - initializeStreamStack(); - handleSessionStarted(); -} - -void Session::finishSession() { - finishing = true; - connection->disconnect(); - handleSessionFinished(boost::optional<SessionError>()); - finishing = false; - onSessionFinished(boost::optional<SessionError>()); -} - -void Session::finishSession(const SessionError& error) { - finishing = true; - connection->disconnect(); - handleSessionFinished(boost::optional<SessionError>(error)); - finishing = false; - onSessionFinished(boost::optional<SessionError>(error)); -} - -void Session::initializeStreamStack() { - xmppLayer = boost::shared_ptr<XMPPLayer>( - new XMPPLayer(payloadParserFactories, payloadSerializers)); - xmppLayer->onStreamStart.connect( - boost::bind(&Session::handleStreamStart, shared_from_this(), _1)); - xmppLayer->onElement.connect(boost::bind(&Session::handleElement, shared_from_this(), _1)); - xmppLayer->onError.connect( - boost::bind(&Session::finishSession, shared_from_this(), XMLError)); - xmppLayer->onDataRead.connect(boost::bind(boost::ref(onDataRead), _1)); - xmppLayer->onWriteData.connect(boost::bind(boost::ref(onDataWritten), _1)); - connection->onDisconnected.connect( - boost::bind(&Session::handleDisconnected, shared_from_this(), _1)); - connectionLayer = boost::shared_ptr<ConnectionLayer>(new ConnectionLayer(connection)); - streamStack = new StreamStack(xmppLayer, connectionLayer); -} - -void Session::sendElement(boost::shared_ptr<Element> stanza) { - xmppLayer->writeElement(stanza); -} - -void Session::handleDisconnected(const boost::optional<Connection::Error>& connectionError) { - if (connectionError) { - switch (*connectionError) { - case Connection::ReadError: - finishSession(ConnectionReadError); - break; - case Connection::WriteError: - finishSession(ConnectionWriteError); - break; - } - } - else { - finishSession(); - } -} - -} |