• Main Page
  • Classes
  • Files
  • File List

Swiften/Queries/RawRequest.h

00001 /*
00002  * Copyright (c) 2011 Remko Tronçon
00003  * Licensed under the GNU General Public License v3.
00004  * See Documentation/Licenses/GPLv3.txt for more information.
00005  */
00006 
00007 #pragma once
00008 
00009 #include <boost/smart_ptr/make_shared.hpp>
00010 #include <typeinfo>
00011 
00012 #include <Swiften/Base/boost_bsignals.h>
00013 #include <Swiften/Queries/Request.h>
00014 #include <Swiften/Elements/RawXMLPayload.h>
00015 #include <Swiften/Elements/ErrorPayload.h>
00016 #include <Swiften/Serializer/PayloadSerializer.h>
00017 #include <Swiften/Serializer/PayloadSerializers/ErrorSerializer.h>
00018 #include <Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h>
00019 
00020 namespace Swift {
00021   class RawRequest : public Request {
00022     public:
00023       typedef boost::shared_ptr<RawRequest> ref;
00024 
00025       static ref create(IQ::Type type, const JID& recipient, const std::string& data, IQRouter* router) {
00026         return ref(new RawRequest(type, recipient, data, router));
00027       }
00028 
00029       boost::signal<void (const std::string&)> onResponse;
00030 
00031     private:
00032       RawRequest(IQ::Type type, const JID& receiver, const std::string& data, IQRouter* router) : Request(type, receiver, boost::make_shared<RawXMLPayload>(data), router) {
00033       }
00034 
00035       virtual void handleResponse(boost::shared_ptr<Payload> payload, ErrorPayload::ref error) {
00036         if (error) {
00037           onResponse(ErrorSerializer(&serializers).serializePayload(error));
00038         }
00039         else {
00040           assert(payload);
00041           PayloadSerializer* serializer = serializers.getPayloadSerializer(payload);
00042           assert(serializer);
00043           onResponse(serializer->serialize(payload));
00044         }
00045       }
00046 
00047     private:
00048       FullPayloadSerializerCollection serializers;
00049   };
00050 }

Generated on Fri Oct 12 2012 21:00:19 for Swiften by  doxygen 1.7.1