Mercurial > hg > orthanc-stone
view Platforms/Wasm/WasmPlatformApplicationAdapter.cpp @ 973:38409549db43 toa2019082903
Log with addresses + added fingerprint mechanism to avoid calling zombie objects
where:
- a message is sent with a receiver
- the receiver dies
- another receiver with the SAME address is created
- the message reply is executed --> execution on the wrong object!
(since their "identity" is their address. The fix is to identify them with
an UUID stored at creation time)
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Thu, 29 Aug 2019 18:07:55 +0200 |
parents | 4fe4b221a31f |
children |
line wrap: on
line source
#include "WasmPlatformApplicationAdapter.h" #include "Framework/StoneException.h" #include <stdio.h> #include "Platforms/Wasm/Defaults.h" namespace OrthancStone { WasmPlatformApplicationAdapter::WasmPlatformApplicationAdapter(MessageBroker& broker, IStoneApplication& application) : IObserver(broker), application_(application) { } void WasmPlatformApplicationAdapter::HandleSerializedMessageFromWeb(std::string& output, const std::string& input) { try { application_.HandleSerializedMessage(input.c_str()); } 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()); output = std::string("ERROR : "); } catch (std::exception& exc) { printf("Error while handling message from web (error text = %s):\n", exc.what()); printf("While interpreting input: '%s'\n", input.c_str()); output = std::string("ERROR : "); } } void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithString(const std::string& statusUpdateMessage) { try { UpdateStoneApplicationStatusFromCppWithString(statusUpdateMessage.c_str()); } catch (...) { printf("Error while handling string message to web\n"); } } void WasmPlatformApplicationAdapter::NotifyStatusUpdateFromCppToWebWithSerializedMessage(const std::string& statusUpdateMessage) { try { UpdateStoneApplicationStatusFromCppWithSerializedMessage(statusUpdateMessage.c_str()); } catch (...) { printf("Error while handling serialized message to web\n"); } } }