Mercurial > hg > orthanc-stone
comparison Platforms/Generic/WebServiceCommandBase.cpp @ 271:46c5296d867e am-2
OracleWebService and BasicSdlApplicationContext using the same global mutex
author | am@osimis.io |
---|---|
date | Thu, 23 Aug 2018 17:12:54 +0200 |
parents | 89d02de83c03 |
children | dc1beee33134 |
comparison
equal
deleted
inserted
replaced
270:2d64f4d39610 | 271:46c5296d867e |
---|---|
24 #include <Core/HttpClient.h> | 24 #include <Core/HttpClient.h> |
25 | 25 |
26 namespace OrthancStone | 26 namespace OrthancStone |
27 { | 27 { |
28 WebServiceCommandBase::WebServiceCommandBase(MessageBroker& broker, | 28 WebServiceCommandBase::WebServiceCommandBase(MessageBroker& broker, |
29 IWebService::ICallback& callback, | 29 IWebService::ICallback& callback, |
30 const Orthanc::WebServiceParameters& parameters, | 30 const Orthanc::WebServiceParameters& parameters, |
31 const std::string& uri, | 31 const std::string& uri, |
32 const IWebService::Headers& headers, | 32 const IWebService::Headers& headers, |
33 Orthanc::IDynamicObject* payload /* takes ownership */) : | 33 Orthanc::IDynamicObject* payload /* takes ownership */, |
34 BasicSdlApplicationContext& context) : | |
34 IObservable(broker), | 35 IObservable(broker), |
35 callback_(callback), | 36 callback_(callback), |
36 parameters_(parameters), | 37 parameters_(parameters), |
37 uri_(uri), | 38 uri_(uri), |
38 headers_(headers), | 39 headers_(headers), |
39 payload_(payload) | 40 payload_(payload), |
41 context_(context) | |
40 { | 42 { |
41 DeclareEmittableMessage(MessageType_HttpRequestError); | 43 DeclareEmittableMessage(MessageType_HttpRequestError); |
42 DeclareEmittableMessage(MessageType_HttpRequestSuccess); | 44 DeclareEmittableMessage(MessageType_HttpRequestSuccess); |
43 RegisterObserver(callback); | 45 RegisterObserver(callback); |
44 } | 46 } |
45 | 47 |
46 | 48 |
47 void WebServiceCommandBase::Commit() | 49 void WebServiceCommandBase::Commit() |
48 { | 50 { |
51 BasicSdlApplicationContext::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 | |
52 | |
49 if (success_) | 53 if (success_) |
50 { | 54 { |
51 IWebService::ICallback::HttpRequestSuccessMessage message(uri_, answer_.c_str(), answer_.size(), payload_.release()); | 55 IWebService::ICallback::HttpRequestSuccessMessage message(uri_, answer_.c_str(), answer_.size(), payload_.release()); |
52 EmitMessage(message); | 56 EmitMessage(message); |
53 } | 57 } |