/* * Copyright (c) 2011 Jan Kaluza * Licensed under the Simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include #include #include #include #include #include namespace Swift { PubSubPublishPayloadSerializer::PubSubPublishPayloadSerializer(PayloadSerializerCollection *serializers) : GenericPayloadSerializer(), serializers(serializers) { } std::string PubSubPublishPayloadSerializer::serializePayload(boost::shared_ptr payload) const { XMLElement publish("publish"); if (!payload->getNode().empty()) { publish.setAttribute("node", payload->getNode()); } if (!payload->getItems().empty()) { foreach(boost::shared_ptr subPayload, payload->getItems()) { PayloadSerializer* serializer = serializers->getPayloadSerializer(subPayload); if (serializer) { publish.addNode(boost::shared_ptr(new XMLRawTextNode(serializer->serialize(subPayload)))); } } } return publish.serialize(); } }