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();
}