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 }