diff options
Diffstat (limited to 'Swiften/Queries/Responder.h')
m--------- | Swiften | 0 | ||||
-rw-r--r-- | Swiften/Queries/Responder.h | 58 |
2 files changed, 0 insertions, 58 deletions
diff --git a/Swiften b/Swiften new file mode 160000 +Subproject 8213ba16d0043d2461f4b031c881d61dda5a38c diff --git a/Swiften/Queries/Responder.h b/Swiften/Queries/Responder.h deleted file mode 100644 index 9c025eb..0000000 --- a/Swiften/Queries/Responder.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef SWIFTEN_Responder_H -#define SWIFTEN_Responder_H - -#include "Swiften/Queries/IQHandler.h" -#include "Swiften/Queries/IQRouter.h" -#include "Swiften/Elements/ErrorPayload.h" - -namespace Swift { - template<typename PAYLOAD_TYPE> - class Responder : public IQHandler { - public: - Responder(IQRouter* router) : router_(router) { - router_->addHandler(this); - } - - ~Responder() { - router_->removeHandler(this); - } - - protected: - virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0; - virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0; - - void sendResponse(const JID& to, const String& id, boost::shared_ptr<Payload> payload) { - router_->sendIQ(IQ::createResult(to, id, payload)); - } - - void sendError(const JID& to, const String& id, ErrorPayload::Condition condition, ErrorPayload::Type type) { - router_->sendIQ(IQ::createError(to, id, condition, type)); - } - - private: - virtual bool handleIQ(boost::shared_ptr<IQ> iq) { - if (iq->getType() == IQ::Set || iq->getType() == IQ::Get) { - boost::shared_ptr<PAYLOAD_TYPE> payload(iq->getPayload<PAYLOAD_TYPE>()); - if (payload) { - bool result; - if (iq->getType() == IQ::Set) { - result = handleSetRequest(iq->getFrom(), iq->getID(), payload); - } - else { - result = handleGetRequest(iq->getFrom(), iq->getID(), payload); - } - if (!result) { - router_->sendIQ(IQ::createError(iq->getFrom(), iq->getID(), ErrorPayload::NotAllowed, ErrorPayload::Cancel)); - } - return true; - } - } - return false; - } - - private: - IQRouter* router_; - }; -} - -#endif |