コード例 #1
0
folly::Future<std::unique_ptr<std::string>>
AsyncLoadHandler2::future_echo(
    std::unique_ptr<std::string> data) {
  folly::Promise<std::unique_ptr<std::string>> promise;
  auto future = promise.getFuture();

  folly::via(folly::RequestEventBase::get())
      .thenValue([this, promise = std::move(promise), data = std::move(data)](
                     auto&&) mutable {
        std::string output;
        sync_echo(output, std::move(data));
        promise.setValue(std::make_unique<std::string>(std::move(output)));
      });

  return future;
}
コード例 #2
0
folly::Future<std::unique_ptr<std::string>>
AsyncLoadHandler2::future_echo(
    std::unique_ptr<std::string> data) {
  folly::MoveWrapper<
    folly::Promise<std::unique_ptr<std::string>>> promise;
  auto future = promise->getFuture();
  auto wrapped_data =
    folly::MoveWrapper<std::unique_ptr<std::string>>(std::move(data));

  folly::via(folly::RequestEventBase::get()).then(
    [this, promise, wrapped_data]() mutable {
      std::string output;
      sync_echo(output, std::move(*wrapped_data));
      promise->setValue(folly::make_unique<std::string>(std::move(output)));
    });

  return future;
}