Mercurial > hg > orthanc-stone
diff Framework/Toolbox/IWebService.h @ 299:3897f9f28cfa am-callable-and-promise
backup work in progress: updated messaging framework with ICallable
author | am@osimis.io |
---|---|
date | Fri, 14 Sep 2018 16:44:01 +0200 |
parents | 8c8da145fefa |
children | b4abaeb783b1 |
line wrap: on
line diff
--- a/Framework/Toolbox/IWebService.h Mon Sep 10 12:22:26 2018 +0200 +++ b/Framework/Toolbox/IWebService.h Fri Sep 14 16:44:01 2018 +0200 @@ -23,7 +23,9 @@ #include <Core/IDynamicObject.h> #include "../../Framework/Messages/IObserver.h" +#include "../../Framework/Messages/ICallable.h" #include <string> +#include <map> #include <Core/Logging.h> namespace OrthancStone @@ -40,6 +42,37 @@ public: typedef std::map<std::string, std::string> Headers; + struct NewHttpRequestSuccessMessage: public BaseMessage<MessageType_HttpRequestSuccess> + { + const std::string& Uri; + const void* Answer; + size_t AnswerSize; + Orthanc::IDynamicObject* Payload; + NewHttpRequestSuccessMessage(const std::string& uri, + const void* answer, + size_t answerSize, + Orthanc::IDynamicObject* payload) + : BaseMessage(), + Uri(uri), + Answer(answer), + AnswerSize(answerSize), + Payload(payload) + {} + }; + + struct NewHttpRequestErrorMessage: public BaseMessage<MessageType_HttpRequestError> + { + const std::string& Uri; + Orthanc::IDynamicObject* Payload; + NewHttpRequestErrorMessage(const std::string& uri, + Orthanc::IDynamicObject* payload) + : BaseMessage(), + Uri(uri), + Payload(payload) + {} + }; + + class ICallback : public IObserver { public: @@ -76,8 +109,8 @@ ICallback(MessageBroker& broker) : IObserver(broker) { - DeclareHandledMessage(MessageType_HttpRequestError); - DeclareHandledMessage(MessageType_HttpRequestSuccess); +// DeclareHandledMessage(MessageType_HttpRequestError); +// DeclareHandledMessage(MessageType_HttpRequestSuccess); } virtual ~ICallback() { @@ -129,6 +162,13 @@ const Headers& headers, Orthanc::IDynamicObject* payload) = 0; + virtual void GetAsync(const std::string& uri, + const Headers& headers, + Orthanc::IDynamicObject* payload, + MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback, + MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback) = 0; + + virtual void SchedulePostRequest(ICallback& callback, const std::string& uri, const Headers& headers,