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) { ...@@ -1362,9 +1362,8 @@ collectAnyWithoutException(InputIterator first, InputIterator last) {
// collectN (iterator) // collectN (iterator)
// TODO(T26439406): Make return SemiFuture
template <class InputIterator> template <class InputIterator>
Future<std::vector<std::pair< SemiFuture<std::vector<std::pair<
size_t, size_t,
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>> Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>>
collectN(InputIterator first, InputIterator last, size_t n) { collectN(InputIterator first, InputIterator last, size_t n) {
...@@ -1427,7 +1426,7 @@ 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) // reduce (iterator)
......
...@@ -396,7 +396,7 @@ auto collectAnyWithoutException(Collection&& c) ...@@ -396,7 +396,7 @@ auto collectAnyWithoutException(Collection&& c)
Not thread safe. Not thread safe.
*/ */
template <class InputIterator> template <class InputIterator>
Future<std::vector<std::pair< SemiFuture<std::vector<std::pair<
size_t, size_t,
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>> Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>>
collectN(InputIterator first, InputIterator last, size_t n); collectN(InputIterator first, InputIterator last, size_t n);
......
...@@ -577,6 +577,7 @@ TEST(Collect, collectN) { ...@@ -577,6 +577,7 @@ TEST(Collect, collectN) {
bool flag = false; bool flag = false;
size_t n = 3; size_t n = 3;
collectN(futures, n) collectN(futures, n)
.via(&folly::InlineExecutor::instance())
.then([&](std::vector<std::pair<size_t, Try<Unit>>> v) { .then([&](std::vector<std::pair<size_t, Try<Unit>>> v) {
flag = true; flag = true;
EXPECT_EQ(n, v.size()); EXPECT_EQ(n, v.size());
...@@ -603,7 +604,9 @@ TEST(Collect, collectNParallel) { ...@@ -603,7 +604,9 @@ TEST(Collect, collectNParallel) {
bool flag = false; bool flag = false;
size_t n = 90; 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; flag = true;
EXPECT_EQ(n, v.size()); EXPECT_EQ(n, v.size());
for (auto& tt : v) { 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