/*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2015 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
once, thereafter Future already retrieved exception will be raised. */
Future<T> getFuture();
- /** Fulfil the Promise with an exception_wrapper */
+ /** Fulfill the Promise with an exception_wrapper */
void setException(exception_wrapper ew);
- /** Fulfil the Promise with an exception_ptr, e.g.
+ /** Fulfill the Promise with an exception_ptr, e.g.
try {
...
} catch (...) {
*/
void setException(std::exception_ptr const&) DEPRECATED;
- /** Fulfil the Promise with an exception type E, which can be passed to
+ /** Fulfill the Promise with an exception type E, which can be passed to
std::make_exception_ptr(). Useful for originating exceptions. If you
caught an exception the exception_wrapper form is more appropriate.
*/
/// Set an interrupt handler to handle interrupts. See the documentation for
/// Future::raise(). Your handler can do whatever it wants, but if you
- /// bother to set one then you probably will want to fulfil the promise with
+ /// bother to set one then you probably will want to fulfill the promise with
/// an exception (or special value) indicating how the interrupt was
/// handled.
void setInterruptHandler(std::function<void(exception_wrapper const&)>);
- /** Fulfil this Promise (only for Promise<void>) */
- void setValue();
+ /// Fulfill this Promise<void>
+ template <class B = T>
+ typename std::enable_if<std::is_void<B>::value, void>::type
+ setValue() {
+ setTry(Try<T>());
+ }
+
+ /// Sugar to fulfill this Promise<Unit>
+ template <class B = T>
+ typename std::enable_if<std::is_same<Unit, B>::value, void>::type
+ setValue() {
+ setTry(Try<T>(T()));
+ }
/** Set the value (use perfect forwarding for both move and copy) */
template <class M>
void setValue(M&& value);
- void fulfilTry(Try<T> t);
+ void setTry(Try<T>&& t);
- /** Fulfil this Promise with the result of a function that takes no
+ /** Fulfill this Promise with the result of a function that takes no
arguments and returns something implicitly convertible to T.
Captures exceptions. e.g.
- p.fulfil([] { do something that may throw; return a T; });
+ p.setWith([] { do something that may throw; return a T; });
*/
template <class F>
- void fulfil(F&& func);
+ void setWith(F&& func);
private:
typedef typename Future<T>::corePtr corePtr;