Mercurial > pub > ImplabNet
comparison Implab/PromiseExtensions.cs @ 145:706fccb85524 v2
RC: cancellation support for promises + tests
author | cin |
---|---|
date | Sun, 08 Mar 2015 02:52:27 +0300 |
parents | f75cfa58e3d4 |
children | eb793fbbe4ea |
comparison
equal
deleted
inserted
replaced
144:8c0b95069066 | 145:706fccb85524 |
---|---|
172 i++; | 172 i++; |
173 } | 173 } |
174 | 174 |
175 return medium; | 175 return medium; |
176 } | 176 } |
177 | |
178 public static IPromise Then(this IPromise that, Action success, Action<Exception> error, Action<Exception> cancel) { | |
179 Safe.ArgumentNotNull(that, "that"); | |
180 | |
181 var d = new ActionTask(success, error, cancel); | |
182 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
183 if (success != null) | |
184 d.CancellationRequested(that.Cancel); | |
185 return d; | |
186 } | |
187 | |
188 public static IPromise Then(this IPromise that, Action success, Action<Exception> error) { | |
189 return Then(that, success, error, null); | |
190 } | |
191 | |
192 public static IPromise Then(this IPromise that, Action success) { | |
193 return Then(that, success, null, null); | |
194 } | |
195 | |
196 public static IPromise<T> Then<T>(this IPromise that, Func<T> success, Func<Exception, T> error, Func<Exception, T> cancel) { | |
197 Safe.ArgumentNotNull(that, "that"); | |
198 | |
199 var d = new FuncTask<T>(success, error, cancel); | |
200 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
201 if (success != null) | |
202 d.CancellationRequested(that.Cancel); | |
203 return d; | |
204 } | |
205 | |
206 public static IPromise<T> Then<T>(this IPromise that, Func<T> success, Func<Exception, T> error) { | |
207 return Then(that, success, error, null); | |
208 } | |
209 | |
210 public static IPromise<T> Then<T>(this IPromise that, Func<T> success) { | |
211 return Then(that, success, null, null); | |
212 } | |
213 | |
214 public static IPromise<T2> Then<T, T2>(this IPromise<T> that, Func<T, T2> success, Func<Exception, T2> error, Func<Exception, T2> cancel) { | |
215 Safe.ArgumentNotNull(that, "that"); | |
216 var d = new FuncTask<T,T2>(success, error, cancel); | |
217 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
218 if (success != null) | |
219 d.CancellationRequested(that.Cancel); | |
220 return d; | |
221 } | |
222 | |
223 public static IPromise<T2> Then<T, T2>(this IPromise<T> that, Func<T, T2> success, Func<Exception, T2> error) { | |
224 return Then(that, success, error, null); | |
225 } | |
226 | |
227 public static IPromise<T2> Then<T, T2>(this IPromise<T> that, Func<T, T2> success) { | |
228 return Then(that, success, null, null); | |
229 } | |
230 | |
231 #region chain traits | |
232 public static IPromise Chain(this IPromise that, Func<IPromise> success, Func<Exception,IPromise> error, Func<Exception,IPromise> cancel) { | |
233 Safe.ArgumentNotNull(that, "that"); | |
234 | |
235 var d = new ActionChainTask(success, error, cancel); | |
236 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
237 if (success != null) | |
238 d.CancellationRequested(that.Cancel); | |
239 return d; | |
240 } | |
241 | |
242 public static IPromise Chain(this IPromise that, Func<IPromise> success, Func<Exception,IPromise> error) { | |
243 return Chain(that, success, error, null); | |
244 } | |
245 | |
246 public static IPromise Chain(this IPromise that, Func<IPromise> success) { | |
247 return Chain(that, success, null, null); | |
248 } | |
249 | |
250 public static IPromise<T> Chain<T>(this IPromise that, Func<IPromise<T>> success, Func<Exception, IPromise<T>> error, Func<Exception, IPromise<T>> cancel) { | |
251 Safe.ArgumentNotNull(that, "that"); | |
252 | |
253 var d = new FuncChainTask<T>(success, error, cancel); | |
254 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
255 if (success != null) | |
256 d.CancellationRequested(that.Cancel); | |
257 return d; | |
258 } | |
259 | |
260 public static IPromise<T> Chain<T>(this IPromise that, Func<IPromise<T>> success, Func<Exception, IPromise<T>> error) { | |
261 return Chain(that, success, error, null); | |
262 } | |
263 | |
264 public static IPromise<T> Chain<T>(this IPromise that, Func<IPromise<T>> success) { | |
265 return Chain(that, success, null, null); | |
266 } | |
267 | |
268 public static IPromise<T2> Chain<T, T2>(this IPromise<T> that, Func<T, IPromise<T2>> success, Func<Exception, IPromise<T2>> error, Func<Exception, IPromise<T2>> cancel) { | |
269 Safe.ArgumentNotNull(that, "that"); | |
270 var d = new FuncChainTask<T,T2>(success, error, cancel); | |
271 that.On(d.Resolve, d.Reject, d.CancelOperation); | |
272 if (success != null) | |
273 d.CancellationRequested(that.Cancel); | |
274 return d; | |
275 } | |
276 | |
277 public static IPromise<T2> Chain<T, T2>(this IPromise<T> that, Func<T, IPromise<T2>> success, Func<Exception, IPromise<T2>> error) { | |
278 return Chain(that, success, error, null); | |
279 } | |
280 | |
281 public static IPromise<T2> Chain<T, T2>(this IPromise<T> that, Func<T, IPromise<T2>> success) { | |
282 return Chain(that, success, null, null); | |
283 } | |
284 | |
285 #endregion | |
286 | |
177 | 287 |
178 #if NET_4_5 | 288 #if NET_4_5 |
179 | 289 |
180 public static Task<T> GetTask<T>(this IPromise<T> that) { | 290 public static Task<T> GetTask<T>(this IPromise<T> that) { |
181 Safe.ArgumentNotNull(that, "that"); | 291 Safe.ArgumentNotNull(that, "that"); |