view Platforms/Wasm/WasmWebService.h @ 295:b04b13810540 am-2

unified CMakeLists.txt into a single file for WASM/Native + bootstrap Command (to rework) + doc
author am@osimis.io
date Tue, 04 Sep 2018 15:09:42 +0200
parents 9afafb192180
children 3897f9f28cfa
line wrap: on
line source

#pragma once

#include <Framework/Toolbox/IWebService.h>
#include <Core/OrthancException.h>

namespace OrthancStone
{
  class WasmWebService : public IWebService
  {
  private:
    std::string  baseUri_;
    static MessageBroker* broker_;

    // Private constructor => Singleton design pattern
    WasmWebService(MessageBroker& broker) :
      IWebService(broker),
      baseUri_("../../")   // note: this is configurable from the JS code by calling WasmWebService_SetBaseUri
    {
    }

  public:
    static WasmWebService& GetInstance()
    {
      if (broker_ == NULL)
      {
        printf("WasmWebService::GetInstance(): broker not initialized\n");
        throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
      }
      static WasmWebService instance(*broker_);
      return instance;
    }

    static void SetBroker(MessageBroker& broker)
    {
      broker_ = &broker;
    }

    void SetBaseUri(const std::string baseUri);

    virtual void ScheduleGetRequest(ICallback& callback,
                                    const std::string& uri,
                                    const Headers& headers,
                                    Orthanc::IDynamicObject* payload);

    virtual void SchedulePostRequest(ICallback& callback,
                                     const std::string& uri,
                                     const Headers& headers,
                                     const std::string& body,
                                     Orthanc::IDynamicObject* payload);

    virtual void Start()
    {
    }
    
    virtual void Stop()
    {
    }
  };
}