diff Platforms/Wasm/WasmWebService.h @ 253:8ff70c04c6df am-2

IObservable/IObserver now working in WASM too
author am@osimis.io
date Tue, 03 Jul 2018 10:48:47 +0200
parents ddbb339ed4cf
children 65562a28fe05
line wrap: on
line diff
--- a/Platforms/Wasm/WasmWebService.h	Tue Jul 03 10:26:56 2018 +0200
+++ b/Platforms/Wasm/WasmWebService.h	Tue Jul 03 10:48:47 2018 +0200
@@ -1,28 +1,40 @@
 #pragma once
 
 #include <Framework/Toolbox/IWebService.h>
+#include <Core/OrthancException.h>
 
 namespace OrthancStone
 {
   class WasmWebService : public IWebService
   {
   private:
-    std::string  base_;
+    std::string  baseUri_;
+    static MessageBroker* broker_;
 
     // Private constructor => Singleton design pattern
-    WasmWebService() :
-      base_("../../")   // note: this is configurable from the JS code by calling WasmWebService_SetBaseUrl
+    WasmWebService(MessageBroker& broker) :
+      IWebService(broker),
+      baseUri_("../../")   // note: this is configurable from the JS code by calling WasmWebService_SetBaseUri
     {
     }
 
   public:
     static WasmWebService& GetInstance()
     {
-      static WasmWebService instance;
+      if (broker_ == NULL)
+      {
+        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+      }
+      static WasmWebService instance(*broker_);
       return instance;
     }
 
-    void SetBaseUrl(const std::string base);
+    static void SetBroker(MessageBroker& broker)
+    {
+      broker_ = &broker;
+    }
+
+    void SetBaseUri(const std::string baseUri);
 
     virtual void ScheduleGetRequest(ICallback& callback,
                                     const std::string& uri,