diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-11-12 16:56:21 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-12-13 08:17:58 (GMT) |
commit | 81c09a0f6a3e87b078340d7f35d0dea4c03f3a6d (patch) | |
tree | 4371c5808ee26b2b5ed79ace9ccb439ff2988945 /Swiften/Parser | |
parent | fd17fe0d239f97cedebe4ceffa234155bd299b68 (diff) | |
download | swift-81c09a0f6a3e87b078340d7f35d0dea4c03f3a6d.zip swift-81c09a0f6a3e87b078340d7f35d0dea4c03f3a6d.tar.bz2 |
BOSH Support for Swiften
This adds support for BOSH to Swiften. It does not expose it to Swift.
Release-Notes: Swiften now allows connects over BOSH, if used appropriately.
Diffstat (limited to 'Swiften/Parser')
-rw-r--r-- | Swiften/Parser/BOSHBodyExtractor.cpp | 2 | ||||
-rw-r--r-- | Swiften/Parser/BOSHParser.cpp | 55 | ||||
-rw-r--r-- | Swiften/Parser/BOSHParser.h | 47 | ||||
-rw-r--r-- | Swiften/Parser/SConscript | 1 |
4 files changed, 2 insertions, 103 deletions
diff --git a/Swiften/Parser/BOSHBodyExtractor.cpp b/Swiften/Parser/BOSHBodyExtractor.cpp index d8759a3..eeebe8a 100644 --- a/Swiften/Parser/BOSHBodyExtractor.cpp +++ b/Swiften/Parser/BOSHBodyExtractor.cpp @@ -124,6 +124,8 @@ BOSHBodyExtractor::BOSHBodyExtractor(XMLParserFactory* parserFactory, const Byte BOSHBodyParserClient parserClient(this); boost::shared_ptr<XMLParser> parser(parserFactory->createXMLParser(&parserClient)); if (!parser->parse(std::string(reinterpret_cast<const char*>(vecptr(data)), std::distance(data.begin(), i)))) { + /* TODO: This needs to be only validating the BOSH <body> element, so that XMPP parsing errors are caught at + the correct higher layer */ body = boost::optional<BOSHBody>(); return; } diff --git a/Swiften/Parser/BOSHParser.cpp b/Swiften/Parser/BOSHParser.cpp deleted file mode 100644 index 9fb218a..0000000 --- a/Swiften/Parser/BOSHParser.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Thilo Cestonaro - * Licensed under the simplified BSD license. - * See Documentation/Licenses/BSD-simplified.txt for more information. - */ - -#include <cassert> - -#include <Swiften/Parser/BOSHParser.h> -#include <Swiften/Parser/XMLParser.h> -#include <Swiften/Parser/PlatformXMLParserFactory.h> - -namespace Swift { - -BOSHParser::BOSHParser() : - xmlParser_(0), - level_(-1), - parseErrorOccurred_(false) -{ - xmlParser_ = PlatformXMLParserFactory().createXMLParser(this); -} - -BOSHParser::~BOSHParser() { - delete xmlParser_; -} - -bool BOSHParser::parse(const std::string& data) { - bool xmlParseResult = xmlParser_->parse(data); - return xmlParseResult && !parseErrorOccurred_; -} - -void BOSHParser::handleStartElement(const std::string& /*element*/, const std::string& /*ns*/, const AttributeMap& attributes) { - if (!parseErrorOccurred_) { - if (level_ == BoshTopLevel) { - boshBodyAttributes_ = attributes; - } - } - ++level_; -} - -void BOSHParser::handleEndElement(const std::string& /*element*/, const std::string& /*ns*/) { - assert(level_ > BoshTopLevel); - --level_; - if (!parseErrorOccurred_) { - - } -} - -void BOSHParser::handleCharacterData(const std::string& /*data*/) { - if (!parseErrorOccurred_) { - - } -} - -} diff --git a/Swiften/Parser/BOSHParser.h b/Swiften/Parser/BOSHParser.h deleted file mode 100644 index 69b3d13..0000000 --- a/Swiften/Parser/BOSHParser.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Thilo Cestonaro - * Licensed under the simplified BSD license. - * See Documentation/Licenses/BSD-simplified.txt for more information. - */ - -#pragma once - -#include <boost/noncopyable.hpp> - -#include <Swiften/Parser/XMLParserClient.h> -#include <Swiften/Parser/AttributeMap.h> - -namespace Swift { - class XMLParser; - - class BOSHParser : public XMLParserClient, boost::noncopyable { - public: - BOSHParser(); - ~BOSHParser(); - - bool parse(const std::string&); - - std::string getAttribute(const std::string& attribute, const std::string& ns = "") const { - return boshBodyAttributes_.getAttribute(attribute, ns); - } - private: - virtual void handleStartElement( - const std::string& element, - const std::string& ns, - const AttributeMap& attributes); - virtual void handleEndElement(const std::string& element, const std::string& ns); - virtual void handleCharacterData(const std::string& data); - - private: - AttributeMap boshBodyAttributes_; - XMLParser* xmlParser_; - enum Level { - BoshTopLevel = -1, - TopLevel = 0, - StreamLevel = 1, - ElementLevel = 2 - }; - int level_; - bool parseErrorOccurred_; - }; -} diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript index dd19238..e4c2778 100644 --- a/Swiften/Parser/SConscript +++ b/Swiften/Parser/SConscript @@ -11,7 +11,6 @@ sources = [ "AuthChallengeParser.cpp", "AuthSuccessParser.cpp", "AuthResponseParser.cpp", - "BOSHParser.cpp", "CompressParser.cpp", "ElementParser.cpp", "IQParser.cpp", |