Mercurial > pub > ImplabNet
comparison Implab/Safe.cs @ 203:4d9830a9bbb8 v2
Added 'Fail' method to RunnableComponent which allows component to move from
Running to Failed state.
Added PollingComponent a timer based runnable component
More tests
Added FailPromise a thin class to wrap exceptions
Fixed error handling in SuccessPromise classes.
author | cin |
---|---|
date | Tue, 18 Oct 2016 17:49:54 +0300 |
parents | a0ff6a0e9c44 |
children | 8200ab154c8a |
comparison
equal
deleted
inserted
replaced
202:2651cb9a4250 | 203:4d9830a9bbb8 |
---|---|
65 if (d != null) | 65 if (d != null) |
66 d.Dispose(); | 66 d.Dispose(); |
67 } | 67 } |
68 | 68 |
69 [DebuggerStepThrough] | 69 [DebuggerStepThrough] |
70 public static IPromise<T> WrapPromise<T>(Func<T> action) { | 70 public static IPromise<T> Run<T>(Func<T> action) { |
71 ArgumentNotNull(action, "action"); | |
72 | |
73 var p = new Promise<T>(); | |
74 try { | |
75 p.Resolve(action()); | |
76 } catch (Exception err) { | |
77 p.Reject(err); | |
78 } | |
79 | |
80 return p; | |
81 } | |
82 | |
83 [DebuggerStepThrough] | |
84 public static IPromise WrapPromise(Action action) { | |
85 ArgumentNotNull(action, "action"); | |
86 | |
87 var p = new Promise(); | |
88 try { | |
89 action(); | |
90 p.Resolve(); | |
91 } catch (Exception err) { | |
92 p.Reject(err); | |
93 } | |
94 | |
95 return p; | |
96 } | |
97 | |
98 [DebuggerStepThrough] | |
99 public static IPromise InvokePromise(Func<IPromise> action) { | |
100 ArgumentNotNull(action, "action"); | 71 ArgumentNotNull(action, "action"); |
101 | 72 |
102 try { | 73 try { |
103 var p = action(); | 74 return Promise<T>.FromResult(action()); |
104 if (p == null) { | |
105 var d = new Promise(); | |
106 d.Reject(new Exception("The action returned null")); | |
107 p = d; | |
108 } | |
109 return p; | |
110 } catch (Exception err) { | 75 } catch (Exception err) { |
111 var p = new Promise(); | 76 return Promise<T>.FromException(err); |
112 p.Reject(err); | |
113 return p; | |
114 } | 77 } |
115 } | 78 } |
116 | 79 |
117 [DebuggerStepThrough] | 80 [DebuggerStepThrough] |
118 public static IPromise<T> InvokePromise<T>(Func<IPromise<T>> action) { | 81 public static IPromise Run(Action action) { |
82 ArgumentNotNull(action, "action"); | |
83 | |
84 try { | |
85 action(); | |
86 return Promise.SUCCESS; | |
87 } catch (Exception err) { | |
88 return new FailedPromise(err); | |
89 } | |
90 } | |
91 | |
92 [DebuggerStepThrough] | |
93 public static IPromise Run(Func<IPromise> action) { | |
94 ArgumentNotNull(action, "action"); | |
95 | |
96 try { | |
97 return action() ?? new FailedPromise(new Exception("The action returned null")); | |
98 } catch (Exception err) { | |
99 return new FailedPromise(err); | |
100 } | |
101 } | |
102 | |
103 [DebuggerStepThrough] | |
104 public static IPromise<T> Run<T>(Func<IPromise<T>> action) { | |
119 ArgumentNotNull(action, "action"); | 105 ArgumentNotNull(action, "action"); |
120 | 106 |
121 try { | 107 try { |
122 return action() ?? Promise<T>.FromException(new Exception("The action returned null")); | 108 return action() ?? Promise<T>.FromException(new Exception("The action returned null")); |
123 } catch (Exception err) { | 109 } catch (Exception err) { |