@@ -17,13 +17,18 @@ public static class ResultOptionTaskExtensions
17
17
/// <param name="ok"></param>
18
18
/// <param name="none"></param>
19
19
/// <param name="error"></param>
20
+ /// <param name="cancellationToken"></param>
20
21
/// <returns></returns>
21
22
public static async Task < U > MatchAsync < T , TError , U > (
22
23
this Task < ResultOption < T , TError > > resultOptionTask ,
23
24
Func < T , Task < U > > ok ,
24
25
Func < Task < U > > none ,
25
- Func < TError , Task < U > > error ) =>
26
- await ( await resultOptionTask ) . Match ( ok , none , error ) ;
26
+ Func < TError , Task < U > > error ,
27
+ CancellationToken ? cancellationToken = null )
28
+ {
29
+ var option = await resultOptionTask . WaitOrCancel ( cancellationToken ) ;
30
+ return await option . Match ( ok , none , error ) . WaitOrCancel ( cancellationToken ) ;
31
+ }
27
32
28
33
/// <summary>
29
34
/// If ResultOption is Ok evaluate the ok delegate, otherwise none. If
@@ -36,13 +41,15 @@ public static async Task<U> MatchAsync<T, TError, U>(
36
41
/// <param name="ok"></param>
37
42
/// <param name="none"></param>
38
43
/// <param name="error"></param>
44
+ /// <param name="cancellationToken"></param>
39
45
/// <returns></returns>
40
46
public static async Task < U > MatchAsync < T , TError , U > (
41
47
this Task < ResultOption < T , TError > > resultOptionTask ,
42
48
Func < T , U > ok ,
43
49
Func < U > none ,
44
- Func < TError , U > error ) =>
45
- ( await resultOptionTask ) . Match ( ok , none , error ) ;
50
+ Func < TError , U > error ,
51
+ CancellationToken ? cancellationToken = null ) =>
52
+ ( await resultOptionTask . WaitOrCancel ( cancellationToken ) ) . Match ( ok , none , error ) ;
46
53
47
54
/// <summary>
48
55
/// Evaluates the bind delegate if ResultOption is Ok.
@@ -52,11 +59,13 @@ public static async Task<U> MatchAsync<T, TError, U>(
52
59
/// <typeparam name="U"></typeparam>
53
60
/// <param name="resultOptionTask"></param>
54
61
/// <param name="bind"></param>
62
+ /// <param name="cancellationToken"></param>
55
63
/// <returns></returns>
56
64
public static Task < ResultOption < U , TError > > BindAsync < T , TError , U > (
57
65
this Task < ResultOption < T , TError > > resultOptionTask ,
58
- Func < T , ResultOption < U , TError > > bind ) =>
59
- resultOptionTask . MatchAsync ( x => bind ( x ) , ResultOption < U , TError > . None , ResultOption < U , TError > . Error ) ;
66
+ Func < T , ResultOption < U , TError > > bind ,
67
+ CancellationToken ? cancellationToken = null ) =>
68
+ resultOptionTask . MatchAsync ( x => bind ( x ) , ResultOption < U , TError > . None , ResultOption < U , TError > . Error , cancellationToken ) ;
60
69
61
70
/// <summary>
62
71
/// Evaluates the bind delegate if ResultOption is Ok.
@@ -66,11 +75,13 @@ public static Task<ResultOption<U, TError>> BindAsync<T, TError, U>(
66
75
/// <typeparam name="U"></typeparam>
67
76
/// <param name="resultOptionTask"></param>
68
77
/// <param name="bind"></param>
78
+ /// <param name="cancellationToken"></param>
69
79
/// <returns></returns>
70
80
public static Task < ResultOption < U , TError > > BindAsync < T , TError , U > (
71
81
this Task < ResultOption < T , TError > > resultOptionTask ,
72
- Func < T , Task < ResultOption < U , TError > > > bind ) =>
73
- resultOptionTask . MatchAsync ( bind , ResultOption < U , TError > . NoneAsync , ResultOption < U , TError > . ErrorAsync ) ;
82
+ Func < T , Task < ResultOption < U , TError > > > bind ,
83
+ CancellationToken ? cancellationToken = null ) =>
84
+ resultOptionTask . MatchAsync ( bind , ResultOption < U , TError > . NoneAsync , ResultOption < U , TError > . ErrorAsync , cancellationToken ) ;
74
85
75
86
/// <summary>
76
87
/// Evaluates the map delegate if ResultOption is Ok.
@@ -80,11 +91,13 @@ public static Task<ResultOption<U, TError>> BindAsync<T, TError, U>(
80
91
/// <typeparam name="U"></typeparam>
81
92
/// <param name="resultOptionTask"></param>
82
93
/// <param name="map"></param>
94
+ /// <param name="cancellationToken"></param>
83
95
/// <returns></returns>
84
96
public static Task < ResultOption < U , TError > > MapAsync < T , TError , U > (
85
97
this Task < ResultOption < T , TError > > resultOptionTask ,
86
- Func < T , U > map ) =>
87
- resultOptionTask . BindAsync ( x => ResultOption < U , TError > . Ok ( map ( x ) ) ) ;
98
+ Func < T , U > map ,
99
+ CancellationToken ? cancellationToken = null ) =>
100
+ resultOptionTask . BindAsync ( x => ResultOption < U , TError > . Ok ( map ( x ) ) , cancellationToken ) ;
88
101
89
102
/// <summary>
90
103
/// Evaluates the map delegate if ResultOption is Ok.
@@ -94,11 +107,13 @@ public static Task<ResultOption<U, TError>> MapAsync<T, TError, U>(
94
107
/// <typeparam name="U"></typeparam>
95
108
/// <param name="resultOptionTask"></param>
96
109
/// <param name="map"></param>
110
+ /// <param name="cancellationToken"></param>
97
111
/// <returns></returns>
98
112
public static Task < ResultOption < U , TError > > MapAsync < T , TError , U > (
99
113
this Task < ResultOption < T , TError > > resultOptionTask ,
100
- Func < T , Task < U > > map ) =>
101
- resultOptionTask . BindAsync ( x => ResultOption < U , TError > . OkAsync ( map ( x ) ) ) ;
114
+ Func < T , Task < U > > map ,
115
+ CancellationToken ? cancellationToken = null ) =>
116
+ resultOptionTask . BindAsync ( x => ResultOption < U , TError > . OkAsync ( map ( x ) ) , cancellationToken ) ;
102
117
103
118
/// <summary>
104
119
/// Returns the value of ResultOption if it is Ok, otherwise return the
@@ -108,11 +123,13 @@ public static Task<ResultOption<U, TError>> MapAsync<T, TError, U>(
108
123
/// <typeparam name="TError"></typeparam>
109
124
/// <param name="resultOptionTask"></param>
110
125
/// <param name="defaultValue"></param>
126
+ /// <param name="cancellationToken"></param>
111
127
/// <returns></returns>
112
128
public static Task < T > DefaultValueAsync < T , TError > (
113
129
this Task < ResultOption < T , TError > > resultOptionTask ,
114
- T defaultValue ) =>
115
- resultOptionTask . MatchAsync ( ok => ok , ( ) => defaultValue , _ => defaultValue ) ;
130
+ T defaultValue ,
131
+ CancellationToken ? cancellationToken = null ) =>
132
+ resultOptionTask . MatchAsync ( ok => ok , ( ) => defaultValue , _ => defaultValue , cancellationToken ) ;
116
133
117
134
/// <summary>
118
135
/// Returns the value of ResultOption if it is Ok, otherwise evaluate the
@@ -122,11 +139,13 @@ public static Task<T> DefaultValueAsync<T, TError>(
122
139
/// <typeparam name="TError"></typeparam>
123
140
/// <param name="resultTask"></param>
124
141
/// <param name="defaultValue"></param>
142
+ /// <param name="cancellationToken"></param>
125
143
/// <returns></returns>
126
144
public static Task < T > DefaultValueAsync < T , TError > (
127
145
this Task < ResultOption < T , TError > > resultTask ,
128
- Task < T > defaultValue ) =>
129
- resultTask . MatchAsync ( some => Task . FromResult ( some ) , ( ) => defaultValue , _ => defaultValue ) ;
146
+ Task < T > defaultValue ,
147
+ CancellationToken ? cancellationToken = null ) =>
148
+ resultTask . MatchAsync ( some => Task . FromResult ( some ) , ( ) => defaultValue , _ => defaultValue , cancellationToken ) ;
130
149
131
150
/// <summary>
132
151
/// Returns the value of ResultOption if it is Ok, otherwise return the
@@ -136,11 +155,13 @@ public static Task<T> DefaultValueAsync<T, TError>(
136
155
/// <typeparam name="TError"></typeparam>
137
156
/// <param name="resultOptionTask"></param>
138
157
/// <param name="defaultWith"></param>
158
+ /// <param name="cancellationToken"></param>
139
159
/// <returns></returns>
140
160
public static Task < T > DefaultWithAsync < T , TError > (
141
161
this Task < ResultOption < T , TError > > resultOptionTask ,
142
- Func < Task < T > > defaultWith ) =>
143
- resultOptionTask . MatchAsync ( ok => Task . FromResult ( ok ) , defaultWith , _ => defaultWith ( ) ) ;
162
+ Func < Task < T > > defaultWith ,
163
+ CancellationToken ? cancellationToken = null ) =>
164
+ resultOptionTask . MatchAsync ( ok => Task . FromResult ( ok ) , defaultWith , _ => defaultWith ( ) , cancellationToken ) ;
144
165
145
166
/// <summary>
146
167
/// Returns the value of ResultOption if it is Ok, otherwise evaluate the
@@ -150,9 +171,11 @@ public static Task<T> DefaultWithAsync<T, TError>(
150
171
/// <typeparam name="TError"></typeparam>
151
172
/// <param name="resultOptionTask"></param>
152
173
/// <param name="defaultWith"></param>
174
+ /// <param name="cancellationToken"></param>
153
175
/// <returns></returns>
154
176
public static Task < T > DefaultWithAsync < T , TError > (
155
177
this Task < ResultOption < T , TError > > resultOptionTask ,
156
- Func < T > defaultWith ) =>
157
- resultOptionTask . MatchAsync ( ok => ok , defaultWith , _ => defaultWith ( ) ) ;
178
+ Func < T > defaultWith ,
179
+ CancellationToken ? cancellationToken = null ) =>
180
+ resultOptionTask . MatchAsync ( ok => ok , defaultWith , _ => defaultWith ( ) , cancellationToken ) ;
158
181
}
0 commit comments