/*
- * Copyright 2015 Facebook, Inc.
+ * Copyright 2016 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#pragma once
#include <folly/futures/Promise.h>
+#include <folly/Portability.h>
namespace folly {
SharedPromise(SharedPromise<T>&&) noexcept;
SharedPromise& operator=(SharedPromise<T>&&) noexcept;
+ /**
+ * Provide a way to split a Future<T>. Note that while the Futures from
+ * `getFuture()' depend on the completion of the parameter Future they do not
+ * inherit any other properties such as Executor's passed to `via' etc.
+ */
+ explicit SharedPromise(Future<T>);
+
/**
* Return a Future tied to the shared core state. Unlike Promise::getFuture,
* this can be called an unlimited number of times per SharedPromise.
p.setException(std::current_exception());
}
*/
- DEPRECATED void setException(std::exception_ptr const&);
+ FOLLY_DEPRECATED("use setException(exception_wrapper)")
+ void setException(std::exception_ptr const&);
/** Fulfill the SharedPromise with an exception type E, which can be passed to
std::make_exception_ptr(). Useful for originating exceptions. If you
template <class F>
void setWith(F&& func);
+ bool isFulfilled();
+
private:
std::mutex mutex_;
size_t size_{0};
bool hasValue_{false};
Try<T> try_;
std::vector<Promise<T>> promises_;
+ std::function<void(exception_wrapper const&)> interruptHandler_;
};
}