diff options
Diffstat (limited to 'Swiften/Serializer/XMPPSerializer.cpp')
-rw-r--r-- | Swiften/Serializer/XMPPSerializer.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Swiften/Serializer/XMPPSerializer.cpp b/Swiften/Serializer/XMPPSerializer.cpp index d2eb520..da4715c 100644 --- a/Swiften/Serializer/XMPPSerializer.cpp +++ b/Swiften/Serializer/XMPPSerializer.cpp @@ -8,6 +8,7 @@ #include <boost/bind.hpp> #include <iostream> +#include <cassert> #include "Swiften/Elements/ProtocolHeader.h" #include "Swiften/Base/foreach.h" @@ -30,10 +31,11 @@ #include "Swiften/Serializer/MessageSerializer.h" #include "Swiften/Serializer/PresenceSerializer.h" #include "Swiften/Serializer/IQSerializer.h" +#include "Swiften/Serializer/ComponentHandshakeSerializer.h" namespace Swift { -XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers) { +XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers, StreamType type) : type_(type) { serializers_.push_back(boost::shared_ptr<ElementSerializer>(new PresenceSerializer(payloadSerializers))); serializers_.push_back(boost::shared_ptr<ElementSerializer>(new IQSerializer(payloadSerializers))); serializers_.push_back(boost::shared_ptr<ElementSerializer>(new MessageSerializer(payloadSerializers))); @@ -53,10 +55,11 @@ XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers) serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StreamManagementFailedSerializer())); serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StanzaAckSerializer())); serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StanzaAckRequestSerializer())); + serializers_.push_back(boost::shared_ptr<ElementSerializer>(new ComponentHandshakeSerializer())); } String XMPPSerializer::serializeHeader(const ProtocolHeader& header) const { - String result = "<?xml version=\"1.0\"?><stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\""; + String result = "<?xml version=\"1.0\"?><stream:stream xmlns=\"" + getDefaultNamespace() + "\" xmlns:stream=\"http://etherx.jabber.org/streams\""; if (!header.getFrom().isEmpty()) { result += " from=\"" + header.getFrom() + "\""; } @@ -90,4 +93,14 @@ String XMPPSerializer::serializeFooter() const { return "</stream:stream>"; } +String XMPPSerializer::getDefaultNamespace() const { + switch (type_) { + case ClientStreamType: return "jabber:client"; + case ServerStreamType: return "jabber:server"; + case ComponentStreamType: return "jabber:component:accept"; + } + assert(false); + return ""; +} + } |