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