diff options
Diffstat (limited to 'Swiften/Parser/PayloadParsers/BytestreamsParser.cpp')
-rw-r--r-- | Swiften/Parser/PayloadParsers/BytestreamsParser.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp b/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp new file mode 100644 index 0000000..154a925 --- /dev/null +++ b/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Parser/PayloadParsers/BytestreamsParser.h" + +#include <boost/lexical_cast.hpp> + +#include "Swiften/Base/foreach.h" + +namespace Swift { + +BytestreamsParser::BytestreamsParser() : level(TopLevel) { +} + +BytestreamsParser::~BytestreamsParser() { +} + +void BytestreamsParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) { + if (level == TopLevel) { + getPayloadInternal()->setStreamID(attributes.getAttribute("sid")); + } + else if (level == PayloadLevel) { + if (element == "streamhost") { + try { + getPayloadInternal()->addStreamHost(Bytestreams::StreamHost(attributes.getAttribute("host"), JID(attributes.getAttribute("jid")), boost::lexical_cast<int>(attributes.getAttribute("port")))); + } + catch (boost::bad_lexical_cast& e) { + } + } + else if (element == "streamhost-used") { + getPayloadInternal()->setUsedStreamHost(JID(attributes.getAttribute("jid"))); + } + } + ++level; +} + +void BytestreamsParser::handleEndElement(const String&, const String&) { + --level; +} + +void BytestreamsParser::handleCharacterData(const String&) { +} + + +} |