Mercurial > hg > orthanc-stone
diff Platforms/Generic/WebServiceCommandBase.cpp @ 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 | 87376a645ee1 |
children | b4abaeb783b1 |
line wrap: on
line diff
--- a/Platforms/Generic/WebServiceCommandBase.cpp Mon Sep 10 12:22:26 2018 +0200 +++ b/Platforms/Generic/WebServiceCommandBase.cpp Fri Sep 14 16:44:01 2018 +0200 @@ -42,7 +42,7 @@ { DeclareEmittableMessage(MessageType_HttpRequestError); DeclareEmittableMessage(MessageType_HttpRequestSuccess); - RegisterObserver(callback); + // TODO ? RegisterObserver(callback); } @@ -61,4 +61,40 @@ EmitMessage(message); } } + + NewWebServiceCommandBase::NewWebServiceCommandBase(MessageBroker& broker, + MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback, + MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback, + const Orthanc::WebServiceParameters& parameters, + const std::string& uri, + const IWebService::Headers& headers, + Orthanc::IDynamicObject* payload /* takes ownership */, + NativeStoneApplicationContext& context) : + IObservable(broker), + successCallback_(successCallback), + failureCallback_(failureCallback), + parameters_(parameters), + uri_(uri), + headers_(headers), + payload_(payload), + context_(context) + { + } + + + void NewWebServiceCommandBase::Commit() + { + NativeStoneApplicationContext::GlobalMutexLocker lock(context_); // we want to make sure that, i.e, the UpdateThread is not triggered while we are updating the "model" with the result of a WebServiceCommand + + if (success_ && successCallback_.get() != NULL) + { + successCallback_->Apply(IWebService::NewHttpRequestSuccessMessage(uri_, answer_.c_str(), answer_.size(), payload_.release())); + } + else if (!success_ && failureCallback_.get() != NULL) + { + successCallback_->Apply(IWebService::NewHttpRequestErrorMessage(uri_, payload_.release())); + } + + } + }