You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2014/04/09 02:28:26 UTC

git commit: Added support for constructing a Future from a Try.

Repository: mesos
Updated Branches:
  refs/heads/master 497186dd3 -> 9197058ae


Added support for constructing a Future from a Try.

Review: https://reviews.apache.org/r/20106


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9197058a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9197058a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9197058a

Branch: refs/heads/master
Commit: 9197058aedbe28200aeda9f1da5234c47440f94a
Parents: 497186d
Author: Ritwik Yadav <ri...@gmail.com>
Authored: Tue Apr 8 17:19:30 2014 -0700
Committer: Benjamin Mahler <bm...@twitter.com>
Committed: Tue Apr 8 17:28:04 2014 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/include/process/future.hpp  | 15 +++++++++++++++
 3rdparty/libprocess/src/tests/process_tests.cpp | 16 ++++++++++++++++
 2 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/9197058a/3rdparty/libprocess/include/process/future.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/future.hpp b/3rdparty/libprocess/include/process/future.hpp
index 37c04c3..f394a96 100644
--- a/3rdparty/libprocess/include/process/future.hpp
+++ b/3rdparty/libprocess/include/process/future.hpp
@@ -31,6 +31,7 @@
 #include <stout/none.hpp>
 #include <stout/option.hpp>
 #include <stout/preprocessor.hpp>
+#include <stout/try.hpp>
 
 namespace process {
 
@@ -95,6 +96,8 @@ public:
 
   /*implicit*/ Future(const Future<T>& that);
 
+  /*implicit*/ Future(const Try<T>& t);
+
   ~Future();
 
   // Futures are assignable (and copyable). This results in the
@@ -1013,6 +1016,18 @@ Future<T>::Future(const Future<T>& that)
 
 
 template <typename T>
+Future<T>::Future(const Try<T>& t)
+  : data(new Data())
+{
+  if (t.isSome()){
+    set(t.get());
+  } else {
+    fail(t.error());
+  }
+}
+
+
+template <typename T>
 Future<T>::~Future() {}
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/9197058a/3rdparty/libprocess/src/tests/process_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/process_tests.cpp b/3rdparty/libprocess/src/tests/process_tests.cpp
index 9dae931..ff0ee75 100644
--- a/3rdparty/libprocess/src/tests/process_tests.cpp
+++ b/3rdparty/libprocess/src/tests/process_tests.cpp
@@ -32,6 +32,7 @@
 #include <stout/os.hpp>
 #include <stout/stringify.hpp>
 #include <stout/stopwatch.hpp>
+#include <stout/try.hpp>
 #include <stout/tuple.hpp>
 
 #include "encoder.hpp"
@@ -1691,3 +1692,18 @@ TEST(Process, defers)
       defer(functor));
 }
 #endif // __cplusplus >= 201103L
+
+
+TEST(Future, FromTry)
+{
+  Try<int> t = 1;
+  Future<int> future = t;
+
+  ASSERT_TRUE(future.isReady());
+  EXPECT_EQ(1, future.get());
+
+  t = Error("error");
+  future = t;
+
+  ASSERT_TRUE(future.isFailed());
+}