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"); |
