Mercurial > hg > orthanc-stone
comparison Framework/Messages/Promise.h @ 403:99e31898910e
IObservable.cpp
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 11 Nov 2018 12:13:31 +0100 |
parents | 4a79193ffb58 |
children | b70e9be013e4 |
comparison
equal
deleted
inserted
replaced
402:72355b637945 | 403:99e31898910e |
---|---|
45 } | 45 } |
46 | 46 |
47 void Success(const IMessage& message) | 47 void Success(const IMessage& message) |
48 { | 48 { |
49 // check the target is still alive in the broker | 49 // check the target is still alive in the broker |
50 if (broker_.IsActive(successCallable_->GetObserver())) | 50 if (successCallable_.get() != NULL && |
51 broker_.IsActive(*successCallable_->GetObserver())) | |
51 { | 52 { |
52 successCallable_->Apply(message); | 53 successCallable_->Apply(message); |
53 } | 54 } |
54 } | 55 } |
55 | 56 |
56 void Failure(const IMessage& message) | 57 void Failure(const IMessage& message) |
57 { | 58 { |
58 // check the target is still alive in the broker | 59 // check the target is still alive in the broker |
59 if (broker_.IsActive(failureCallable_->GetObserver())) | 60 if (failureCallable_.get() != NULL && |
61 broker_.IsActive(*failureCallable_->GetObserver())) | |
60 { | 62 { |
61 failureCallable_->Apply(message); | 63 failureCallable_->Apply(message); |
62 } | 64 } |
63 } | 65 } |
64 | 66 |
65 Promise& Then(ICallable* successCallable) | 67 Promise& Then(ICallable* successCallable) // Takes ownership |
66 { | 68 { |
67 if (successCallable_.get() != NULL) | 69 if (successCallable_.get() != NULL) |
68 { | 70 { |
69 // TODO: throw throw new "Promise may only have a single success target" | 71 // TODO: throw throw new "Promise may only have a single success target" |
70 } | 72 } |
71 successCallable_.reset(successCallable); | 73 successCallable_.reset(successCallable); |
72 return *this; | 74 return *this; |
73 } | 75 } |
74 | 76 |
75 Promise& Else(ICallable* failureCallable) | 77 Promise& Else(ICallable* failureCallable) // Takes ownership |
76 { | 78 { |
77 if (failureCallable_.get() != NULL) | 79 if (failureCallable_.get() != NULL) |
78 { | 80 { |
79 // TODO: throw throw new "Promise may only have a single failure target" | 81 // TODO: throw throw new "Promise may only have a single failure target" |
80 } | 82 } |
81 failureCallable_.reset(failureCallable); | 83 failureCallable_.reset(failureCallable); |
82 return *this; | 84 return *this; |
83 } | 85 } |
84 | |
85 }; | 86 }; |
86 | |
87 | |
88 } | 87 } |