summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2011-11-12 16:56:21 (GMT)
committerKevin Smith <git@kismith.co.uk>2011-12-13 08:17:58 (GMT)
commit81c09a0f6a3e87b078340d7f35d0dea4c03f3a6d (patch)
tree4371c5808ee26b2b5ed79ace9ccb439ff2988945 /Swiften/Parser
parentfd17fe0d239f97cedebe4ceffa234155bd299b68 (diff)
downloadswift-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.cpp2
-rw-r--r--Swiften/Parser/BOSHParser.cpp55
-rw-r--r--Swiften/Parser/BOSHParser.h47
-rw-r--r--Swiften/Parser/SConscript1
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",