Mercurial > hg > orthanc-stone
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 } |