comparison 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
comparison
equal deleted inserted replaced
298:f58bfb7bbcc9 299:3897f9f28cfa
40 payload_(payload), 40 payload_(payload),
41 context_(context) 41 context_(context)
42 { 42 {
43 DeclareEmittableMessage(MessageType_HttpRequestError); 43 DeclareEmittableMessage(MessageType_HttpRequestError);
44 DeclareEmittableMessage(MessageType_HttpRequestSuccess); 44 DeclareEmittableMessage(MessageType_HttpRequestSuccess);
45 RegisterObserver(callback); 45 // TODO ? RegisterObserver(callback);
46 } 46 }
47 47
48 48
49 void WebServiceCommandBase::Commit() 49 void WebServiceCommandBase::Commit()
50 { 50 {
59 { 59 {
60 IWebService::ICallback::HttpRequestErrorMessage message(uri_, payload_.release()); 60 IWebService::ICallback::HttpRequestErrorMessage message(uri_, payload_.release());
61 EmitMessage(message); 61 EmitMessage(message);
62 } 62 }
63 } 63 }
64
65 NewWebServiceCommandBase::NewWebServiceCommandBase(MessageBroker& broker,
66 MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback,
67 MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback,
68 const Orthanc::WebServiceParameters& parameters,
69 const std::string& uri,
70 const IWebService::Headers& headers,
71 Orthanc::IDynamicObject* payload /* takes ownership */,
72 NativeStoneApplicationContext& context) :
73 IObservable(broker),
74 successCallback_(successCallback),
75 failureCallback_(failureCallback),
76 parameters_(parameters),
77 uri_(uri),
78 headers_(headers),
79 payload_(payload),
80 context_(context)
81 {
82 }
83
84
85 void NewWebServiceCommandBase::Commit()
86 {
87 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
88
89 if (success_ && successCallback_.get() != NULL)
90 {
91 successCallback_->Apply(IWebService::NewHttpRequestSuccessMessage(uri_, answer_.c_str(), answer_.size(), payload_.release()));
92 }
93 else if (!success_ && failureCallback_.get() != NULL)
94 {
95 successCallback_->Apply(IWebService::NewHttpRequestErrorMessage(uri_, payload_.release()));
96 }
97
98 }
99
64 } 100 }