hank
2017-09-04 37c026a8cae451b543b46d2941a221b8b1bd2c5e
commit | author | age
bad748 1 /*
W 2  *  Copyright (c) 2014, Facebook, Inc.
3  *  All rights reserved.
4  *
5  *  This source code is licensed under the BSD-style license found in the
6  *  LICENSE file in the root directory of this source tree. An additional grant
7  *  of patent rights can be found in the PATENTS file in the same directory.
8  *
9  */
10
11 #import <Foundation/Foundation.h>
12
13 NS_ASSUME_NONNULL_BEGIN
14
15 @class BFTask<ResultType>;
16
17 /*!
18  A BFTaskCompletionSource represents the producer side of tasks.
19  It is a task that also has methods for changing the state of the
20  task by settings its completion values.
21  */
22 @interface BFTaskCompletionSource<__covariant ResultType> : NSObject
23
24 /*!
25  Creates a new unfinished task.
26  */
27 + (instancetype)taskCompletionSource;
28
29 /*!
30  The task associated with this TaskCompletionSource.
31  */
32 @property (nonatomic, strong, readonly) BFTask<ResultType> *task;
33
34 /*!
35  Completes the task by setting the result.
36  Attempting to set this for a completed task will raise an exception.
37  @param result The result of the task.
38  */
39 - (void)setResult:(nullable ResultType)result;
40
41 /*!
42  Completes the task by setting the error.
43  Attempting to set this for a completed task will raise an exception.
44  @param error The error for the task.
45  */
46 - (void)setError:(NSError *)error;
47
48 /*!
49  Completes the task by setting an exception.
50  Attempting to set this for a completed task will raise an exception.
51  @param exception The exception for the task.
9febd9 52  
W 53  @deprecated `BFTask` exception handling is deprecated and will be removed in a future release.
bad748 54  */
9febd9 55 - (void)setException:(NSException *)exception
W 56 __attribute__((deprecated("`BFTask` exception handling is deprecated and will be removed in a future release.")));
bad748 57
W 58 /*!
59  Completes the task by marking it as cancelled.
60  Attempting to set this for a completed task will raise an exception.
61  */
62 - (void)cancel;
63
64 /*!
65  Sets the result of the task if it wasn't already completed.
66  @returns whether the new value was set.
67  */
68 - (BOOL)trySetResult:(nullable ResultType)result;
69
70 /*!
71  Sets the error of the task if it wasn't already completed.
72  @param error The error for the task.
73  @returns whether the new value was set.
74  */
75 - (BOOL)trySetError:(NSError *)error;
76
77 /*!
78  Sets the exception of the task if it wasn't already completed.
79  @param exception The exception for the task.
80  @returns whether the new value was set.
9febd9 81  
W 82  @deprecated `BFTask` exception handling is deprecated and will be removed in a future release.
bad748 83  */
9febd9 84 - (BOOL)trySetException:(NSException *)exception
W 85 __attribute__((deprecated("`BFTask` exception handling is deprecated and will be removed in a future release.")));
bad748 86
W 87 /*!
88  Sets the cancellation state of the task if it wasn't already completed.
89  @returns whether the new value was set.
90  */
91 - (BOOL)trySetCancelled;
92
93 @end
94
95 NS_ASSUME_NONNULL_END