#include "Swiften/Serializer/XMPPSerializer.h" #include #include #include "Swiften/Base/foreach.h" #include "Swiften/Serializer/CompressRequestSerializer.h" #include "Swiften/Serializer/CompressFailureSerializer.h" #include "Swiften/Serializer/StreamFeaturesSerializer.h" #include "Swiften/Serializer/AuthRequestSerializer.h" #include "Swiften/Serializer/AuthFailureSerializer.h" #include "Swiften/Serializer/AuthSuccessSerializer.h" #include "Swiften/Serializer/StartTLSRequestSerializer.h" #include "Swiften/Serializer/StartTLSFailureSerializer.h" #include "Swiften/Serializer/TLSProceedSerializer.h" #include "Swiften/Serializer/MessageSerializer.h" #include "Swiften/Serializer/PresenceSerializer.h" #include "Swiften/Serializer/IQSerializer.h" namespace Swift { XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers) { serializers_.push_back(boost::shared_ptr(new PresenceSerializer(payloadSerializers))); serializers_.push_back(boost::shared_ptr(new IQSerializer(payloadSerializers))); serializers_.push_back(boost::shared_ptr(new MessageSerializer(payloadSerializers))); serializers_.push_back(boost::shared_ptr(new CompressRequestSerializer())); serializers_.push_back(boost::shared_ptr(new CompressFailureSerializer())); serializers_.push_back(boost::shared_ptr(new AuthRequestSerializer())); serializers_.push_back(boost::shared_ptr(new AuthFailureSerializer())); serializers_.push_back(boost::shared_ptr(new AuthSuccessSerializer())); serializers_.push_back(boost::shared_ptr(new StartTLSRequestSerializer())); serializers_.push_back(boost::shared_ptr(new StartTLSFailureSerializer())); serializers_.push_back(boost::shared_ptr(new TLSProceedSerializer())); serializers_.push_back(boost::shared_ptr(new StreamFeaturesSerializer())); } String XMPPSerializer::serializeHeader(const String& domain) const { return ""; } String XMPPSerializer::serializeElement(boost::shared_ptr 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 ""; } } String XMPPSerializer::serializeFooter() const { return ""; } }