Wuyx
2016-11-30 bad74887b192216392bd4017301140f32b9b5f50
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.
52  */
53 - (void)setException:(NSException *)exception;
54
55 /*!
56  Completes the task by marking it as cancelled.
57  Attempting to set this for a completed task will raise an exception.
58  */
59 - (void)cancel;
60
61 /*!
62  Sets the result of the task if it wasn't already completed.
63  @returns whether the new value was set.
64  */
65 - (BOOL)trySetResult:(nullable ResultType)result;
66
67 /*!
68  Sets the error of the task if it wasn't already completed.
69  @param error The error for the task.
70  @returns whether the new value was set.
71  */
72 - (BOOL)trySetError:(NSError *)error;
73
74 /*!
75  Sets the exception of the task if it wasn't already completed.
76  @param exception The exception for the task.
77  @returns whether the new value was set.
78  */
79 - (BOOL)trySetException:(NSException *)exception;
80
81 /*!
82  Sets the cancellation state of the task if it wasn't already completed.
83  @returns whether the new value was set.
84  */
85 - (BOOL)trySetCancelled;
86
87 @end
88
89 NS_ASSUME_NONNULL_END