Commit 1095ffdb authored by Orvid King's avatar Orvid King Committed by Facebook Github Bot

Make folly::collectN return a SemiFuture

Summary: Start with the easy one.

Reviewed By: yfeldblum

Differential Revision: D7957655

fbshipit-source-id: 0c2227402673306e1e6ba3f463b1a93db2582b07
parent 0fc4facd
......@@ -1362,9 +1362,8 @@ collectAnyWithoutException(InputIterator first, InputIterator last) {
// collectN (iterator)
// TODO(T26439406): Make return SemiFuture
template <class InputIterator>
Future<std::vector<std::pair<
SemiFuture<std::vector<std::pair<
size_t,
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>>
collectN(InputIterator first, InputIterator last, size_t n) {
......@@ -1427,7 +1426,7 @@ collectN(InputIterator first, InputIterator last, size_t n) {
});
}
return ctx->p.getSemiFuture().via(&folly::InlineExecutor::instance());
return ctx->p.getSemiFuture();
}
// reduce (iterator)
......
......@@ -396,7 +396,7 @@ auto collectAnyWithoutException(Collection&& c)
Not thread safe.
*/
template <class InputIterator>
Future<std::vector<std::pair<
SemiFuture<std::vector<std::pair<
size_t,
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>>
collectN(InputIterator first, InputIterator last, size_t n);
......
......@@ -577,6 +577,7 @@ TEST(Collect, collectN) {
bool flag = false;
size_t n = 3;
collectN(futures, n)
.via(&folly::InlineExecutor::instance())
.then([&](std::vector<std::pair<size_t, Try<Unit>>> v) {
flag = true;
EXPECT_EQ(n, v.size());
......@@ -603,7 +604,9 @@ TEST(Collect, collectNParallel) {
bool flag = false;
size_t n = 90;
collectN(futures, n).then([&](std::vector<std::pair<size_t, Try<Unit>>> v) {
collectN(futures, n)
.via(&folly::InlineExecutor::instance())
.then([&](std::vector<std::pair<size_t, Try<Unit>>> v) {
flag = true;
EXPECT_EQ(n, v.size());
for (auto& tt : v) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment