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