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 }