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,