diff --git a/include/Swiften/Serializer/PayloadSerializers/StatsSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/StatsSerializer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0bd85f5f700c2f2f0a32c4d1c380dad93ae79b3b --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/StatsSerializer.cpp @@ -0,0 +1,39 @@ +/* + * 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 { + +StatsSerializer::StatsSerializer() : GenericPayloadSerializer() { +} + +std::string StatsSerializer::serializePayload(boost::shared_ptr stats) const { + XMLElement queryElement("query", "http://jabber.org/protocol/stats"); + foreach(const StatsPayload::Item& item, stats->getItems()) { + boost::shared_ptr statElement(new XMLElement("stat")); + statElement->setAttribute("name", item.getName()); + if (!item.getUnits().empty()) { + statElement->setAttribute("units", item.getUnits()); + } + if (!item.getValue().empty()) { + statElement->setAttribute("value", item.getValue()); + } + + queryElement.addNode(statElement); + } + + return queryElement.serialize(); +} + +}