/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Swift { XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers, StreamType type) : type_(type) { serializers_.push_back(boost::make_shared(payloadSerializers)); serializers_.push_back(boost::make_shared(payloadSerializers)); serializers_.push_back(boost::make_shared(payloadSerializers)); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); serializers_.push_back(boost::make_shared()); } std::string XMPPSerializer::serializeHeader(const ProtocolHeader& header) const { std::string result = " element) const { std::vector< boost::shared_ptr >::const_iterator i = std::find_if(serializers_.begin(), serializers_.end(), boost::bind(&ElementSerializer::canSerialize, _1, element)); if (i != serializers_.end()) { return (*i)->serialize(element); } else { std::cerr << "Could not find serializer for " << typeid(*(element.get())).name() << std::endl; return createSafeByteArray(""); } } std::string XMPPSerializer::serializeFooter() const { return ""; } std::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 ""; } }