diff options
Diffstat (limited to 'Sluift/ResponseSink.h')
-rw-r--r-- | Sluift/ResponseSink.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Sluift/ResponseSink.h b/Sluift/ResponseSink.h new file mode 100644 index 0000000..042d6e0 --- /dev/null +++ b/Sluift/ResponseSink.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2011 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <boost/shared_ptr.hpp> + +#include <Swiften/Elements/ErrorPayload.h> + +namespace Swift { + template<typename T> + class ResponseSink { + public: + ResponseSink() : responseReceived(false) { + } + + bool hasResponse() const { + return responseReceived; + } + + boost::shared_ptr<T> getResponsePayload() const { + return payload; + } + + ErrorPayload::ref getResponseError() const { + return error; + } + + void operator()(boost::shared_ptr<T> payload, ErrorPayload::ref error) { + this->payload = payload; + this->error = error; + this->responseReceived = true; + } + + private: + bool responseReceived; + boost::shared_ptr<T> payload; + ErrorPayload::ref error; + }; +} |