view Platforms/Wasm/WasmPlatformApplicationAdapter.cpp @ 466:5055031f4a06 bgo-commands-codegen

- Added browserify to build. This allows using require calls for modules that work with tsc compiler. - removed older stuff related to Protocol Buffers and Flatbuffers - changed triple-slash references to import statements - module prefixes are now added at call sites - added cmake module for filename handling - switched to Ninja for sample build - Added virtual dtor in ICommand
author bgo-osimis
date Mon, 11 Feb 2019 16:00:04 +0100
parents a902a07769d4
children 7105a0bad250
line wrap: on
line source

#include "WasmPlatformApplicationAdapter.h"

#include "Framework/Toolbox/MessagingToolbox.h"
#include "Framework/StoneException.h"
#include <Applications/Commands/BaseCommandBuilder.h>
#include <stdio.h>
#include "Platforms/Wasm/Defaults.h"

namespace OrthancStone
{
    WasmPlatformApplicationAdapter::WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application)
    : IObserver(broker),
      application_(application)
    {
    }

    void WasmPlatformApplicationAdapter::HandleMessageFromWeb(std::string& output, const std::string& input)
    {
      try
      {
        Json::Value inputJson;
        // if the message is a command, build it and execute it
        if (MessagingToolbox::ParseJson(inputJson, input.c_str(), input.size()))
        {
            std::unique_ptr<ICommand> command(application_.GetCommandBuilder().CreateFromJson(inputJson));
            if (command.get() == NULL) 
              printf("Could not parse command: '%s'\n", input.c_str());
            else
              application_.ExecuteCommand(*command);
        } 
      }
      catch (StoneException& exc)
      {
        printf("Error while handling message from web (error code = %d):\n", exc.GetErrorCode());
        printf("While interpreting input: '%s'\n", input.c_str());
      }
    }

    void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWeb(const std::string& statusUpdateMessage)
    {
      try
      {
        UpdateStoneApplicationStatusFromCpp(statusUpdateMessage.c_str());
      }
      catch (...)
      {
        printf("Error while handling message to web\n");
      }
    }

}