/*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2014-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <atomic>
#include <thread>
+#include <folly/executors/InlineExecutor.h>
#include <folly/futures/FutureException.h>
#include <folly/futures/detail/Core.h>
}
template <class T>
-Future<T> Promise<T>::getFuture() {
+SemiFuture<T> Promise<T>::getSemiFuture() {
throwIfRetrieved();
retrieved_ = true;
- return Future<T>(core_);
+ return SemiFuture<T>(core_);
+}
+
+template <class T>
+Future<T> Promise<T>::getFuture() {
+ // An InlineExecutor approximates the old behaviour of continuations
+ // running inine on setting the value of the promise.
+ return getSemiFuture().via(&InlineExecutor::instance());
}
template <class T>
return true;
}
-}
+} // namespace folly