You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2012/02/23 00:22:48 UTC

svn commit: r1292580 - /incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp

Author: benh
Date: Wed Feb 22 23:22:48 2012
New Revision: 1292580

URL: http://svn.apache.org/viewvc?rev=1292580&view=rev
Log:
Updating the libprocess collect interface to be more STL general (contributed by Sam Whitlock).

Modified:
    incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp

Modified: incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp?rev=1292580&r1=1292579&r2=1292580&view=diff
==============================================================================
--- incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp (original)
+++ incubator/mesos/trunk/third_party/libprocess/include/process/collect.hpp Wed Feb 22 23:22:48 2012
@@ -3,7 +3,7 @@
 
 #include <assert.h>
 
-#include <set>
+#include <list>
 
 #include <process/defer.hpp>
 #include <process/future.hpp>
@@ -16,7 +16,7 @@ namespace process {
 // be a failure. Likewise, if any future fails than the result future
 // will be a failure.
 template <typename T>
-Future<std::set<T> > collect(std::set<Future<T> >& futures);
+Future<std::list<T> > collect(std::list<Future<T> >& futures);
 
 
 namespace internal {
@@ -26,8 +26,8 @@ class CollectProcess : public Process<Co
 {
 public:
   CollectProcess(
-      const std::set<Future<T> >& _futures,
-      Promise<std::set<T> >* _promise)
+      const std::list<Future<T> >& _futures,
+      Promise<std::list<T> >* _promise)
     : futures(_futures), promise(_promise) {}
 
   virtual ~CollectProcess()
@@ -40,7 +40,7 @@ public:
     // Stop this nonsense if nobody cares.
     promise->future().onDiscarded(defer(this, &CollectProcess::discarded));
 
-    typename std::set<Future<T> >::iterator iterator;
+    typename std::list<Future<T> >::iterator iterator;
     for (iterator = futures.begin(); iterator != futures.end(); ++iterator) {
       const Future<T>& future = *iterator;
       future.onAny(defer(this, &CollectProcess::waited, future));
@@ -61,7 +61,7 @@ private:
       promise->fail("Collect failed: future discarded");
     } else {
       assert(future.isReady());
-      values.insert(future.get());
+      values.push_back(future.get());
       if (futures.size() == values.size()) {
         promise->set(values);
         terminate(this);
@@ -69,18 +69,18 @@ private:
     }
   }
 
-  std::set<Future<T> > futures;
-  Promise<std::set<T> >* promise;
-  std::set<T> values;
+  std::list<Future<T> > futures;
+  Promise<std::list<T> >* promise;
+  std::list<T> values;
 };
 
 } // namespace internal {
 
 
 template <typename T>
-inline Future<std::set<T> > collect(std::set<Future<T> >& futures)
+inline Future<std::list<T> > collect(std::list<Future<T> >& futures)
 {
-  Promise<std::set<T> >* promise = new Promise<std::set<T> >();
+  Promise<std::list<T> >* promise = new Promise<std::list<T> >();
   spawn(new internal::CollectProcess<T>(futures, promise), true);
   return promise->future();
 }