diff 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
line wrap: on
line diff
--- a/Framework/Messages/Promise.h	Sat Nov 10 12:34:45 2018 +0100
+++ b/Framework/Messages/Promise.h	Sun Nov 11 12:13:31 2018 +0100
@@ -47,7 +47,8 @@
     void Success(const IMessage& message)
     {
       // check the target is still alive in the broker
-      if (broker_.IsActive(successCallable_->GetObserver()))
+      if (successCallable_.get() != NULL &&
+          broker_.IsActive(*successCallable_->GetObserver()))
       {
         successCallable_->Apply(message);
       }
@@ -56,13 +57,14 @@
     void Failure(const IMessage& message)
     {
       // check the target is still alive in the broker
-      if (broker_.IsActive(failureCallable_->GetObserver()))
+      if (failureCallable_.get() != NULL &&
+          broker_.IsActive(*failureCallable_->GetObserver()))
       {
         failureCallable_->Apply(message);
       }
     }
 
-    Promise& Then(ICallable* successCallable)
+    Promise& Then(ICallable* successCallable)   // Takes ownership
     {
       if (successCallable_.get() != NULL)
       {
@@ -72,7 +74,7 @@
       return *this;
     }
 
-    Promise& Else(ICallable* failureCallable)
+    Promise& Else(ICallable* failureCallable)   // Takes ownership
     {
       if (failureCallable_.get() != NULL)
       {
@@ -81,8 +83,5 @@
       failureCallable_.reset(failureCallable);
       return *this;
     }
-
   };
-
-
 }