comparison Platforms/Generic/WebServiceCommandBase.cpp @ 300:b4abaeb783b1 am-callable-and-promise

messaging refactoring almost complete: works fine in native
author am@osimis.io
date Tue, 18 Sep 2018 15:23:21 +0200
parents 3897f9f28cfa
children 547e1cf7aa7b
comparison
equal deleted inserted replaced
299:3897f9f28cfa 300:b4abaeb783b1
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 MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback,
30 const Orthanc::WebServiceParameters& parameters, 30 MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback,
31 const std::string& uri,
32 const IWebService::Headers& headers,
33 Orthanc::IDynamicObject* payload /* takes ownership */,
34 NativeStoneApplicationContext& context) :
35 IObservable(broker),
36 callback_(callback),
37 parameters_(parameters),
38 uri_(uri),
39 headers_(headers),
40 payload_(payload),
41 context_(context)
42 {
43 DeclareEmittableMessage(MessageType_HttpRequestError);
44 DeclareEmittableMessage(MessageType_HttpRequestSuccess);
45 // TODO ? RegisterObserver(callback);
46 }
47
48
49 void WebServiceCommandBase::Commit()
50 {
51 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
52
53 if (success_)
54 {
55 IWebService::ICallback::HttpRequestSuccessMessage message(uri_, answer_.c_str(), answer_.size(), payload_.release());
56 EmitMessage(message);
57 }
58 else
59 {
60 IWebService::ICallback::HttpRequestErrorMessage message(uri_, payload_.release());
61 EmitMessage(message);
62 }
63 }
64
65 NewWebServiceCommandBase::NewWebServiceCommandBase(MessageBroker& broker,
66 MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback,
67 MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback,
68 const Orthanc::WebServiceParameters& parameters, 31 const Orthanc::WebServiceParameters& parameters,
69 const std::string& uri, 32 const std::string& uri,
70 const IWebService::Headers& headers, 33 const IWebService::Headers& headers,
71 Orthanc::IDynamicObject* payload /* takes ownership */, 34 Orthanc::IDynamicObject* payload /* takes ownership */,
72 NativeStoneApplicationContext& context) : 35 NativeStoneApplicationContext& context) :
80 context_(context) 43 context_(context)
81 { 44 {
82 } 45 }
83 46
84 47
85 void NewWebServiceCommandBase::Commit() 48 void WebServiceCommandBase::Commit()
86 { 49 {
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 50 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 51
89 if (success_ && successCallback_.get() != NULL) 52 if (success_ && successCallback_.get() != NULL)
90 { 53 {