/*
- * 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.
namespace futures {
namespace detail {
+template <class T>
+class FutureBase;
struct EmptyConstruct {};
template <typename T, typename F>
class CoreCallbackState;
Promise(Promise<T>&&) noexcept;
Promise& operator=(Promise<T>&&) noexcept;
+ /** Return a SemiFuture tied to the shared core state. This can be called only
+ once, thereafter FutureAlreadyRetrieved exception will be raised. */
+ SemiFuture<T> getSemiFuture();
+
/** Return a Future tied to the shared core state. This can be called only
- once, thereafter Future already retrieved exception will be raised. */
+ once, thereafter FutureAlreadyRetrieved exception will be raised.
+ NOTE: This function is deprecated. Please use getSemiFuture and pass the
+ appropriate executor to .via on the returned SemiFuture to get a
+ valid Future where necessary. */
Future<T> getFuture();
/** Fulfill the Promise with an exception_wrapper */
private:
typedef typename Future<T>::corePtr corePtr;
template <class>
+ friend class futures::detail::FutureBase;
+ template <class>
friend class SemiFuture;
- template <class> friend class Future;
+ template <class>
+ friend class Future;
template <class, class>
friend class futures::detail::CoreCallbackState;
void detach();
};
-}
+} // namespace folly
#include <folly/futures/Future.h>
#include <folly/futures/Promise-inl.h>