@@ -0,0 +1,36 | |||
|
1 | using System; | |
|
2 | ||
|
3 | namespace Implab { | |
|
4 | public interface ICancelationToken { | |
|
5 | /// <summary> | |
|
6 | /// Indicates wherther the cancellation was requested. | |
|
7 | /// </summary> | |
|
8 | bool IsCancelRequested { get ; } | |
|
9 | ||
|
10 | /// <summary> | |
|
11 | /// The reason why the operation should be cancelled. | |
|
12 | /// </summary> | |
|
13 | Exception CancelReason { get ; } | |
|
14 | ||
|
15 | /// <summary> | |
|
16 | /// Accepts if requested. | |
|
17 | /// </summary> | |
|
18 | /// <returns><c>true</c>, if if requested was accepted, <c>false</c> otherwise.</returns> | |
|
19 | bool AcceptIfRequested(); | |
|
20 | ||
|
21 | /// <summary> | |
|
22 | /// Sets the token to cancelled state. | |
|
23 | /// </summary> | |
|
24 | /// <param name="reason">The reason why the operation was cancelled.</param> | |
|
25 | void SetCancelled(Exception reason); | |
|
26 | ||
|
27 | /// <summary> | |
|
28 | /// Adds the listener for the cancellation request, is the cancellation was requested the <paramref name="handler"/> | |
|
29 | /// is executed immediatelly. | |
|
30 | /// </summary> | |
|
31 | /// <param name="handler">The handler which will be executed if the cancel occurs.</param> | |
|
32 | void CancellationRequested(Action<Exception> handler); | |
|
33 | ||
|
34 | } | |
|
35 | } | |
|
36 |
@@ -286,18 +286,6 namespace Implab { | |||
|
286 | 286 | |
|
287 | 287 | #endregion |
|
288 | 288 | |
|
289 | #region ICancellable implementation | |
|
290 | ||
|
291 | public void Cancel() { | |
|
292 | SetCancelled(null); | |
|
293 | } | |
|
294 | ||
|
295 | public void Cancel(Exception reason) { | |
|
296 | SetCancelled(reason); | |
|
297 | } | |
|
298 | ||
|
299 | #endregion | |
|
300 | ||
|
301 | 289 | public Exception Error { |
|
302 | 290 | get { |
|
303 | 291 | return m_error; |
@@ -4,7 +4,7 namespace Implab { | |||
|
4 | 4 | /// <summary> |
|
5 | 5 | /// Deferred result, usually used by asynchronous services as the service part of the promise. |
|
6 | 6 | /// </summary> |
|
7 |
public interface IDeferred : ICancel |
|
|
7 | public interface IDeferred : ICancelationToken { | |
|
8 | 8 | |
|
9 | 9 | void Resolve(); |
|
10 | 10 |
@@ -1,7 +1,7 | |||
|
1 | 1 | using System; |
|
2 | 2 | |
|
3 | 3 | namespace Implab { |
|
4 |
public interface IDeferred<T> : ICancel |
|
|
4 | public interface IDeferred<T> : ICancelationToken { | |
|
5 | 5 | void Resolve(T value); |
|
6 | 6 | |
|
7 | 7 | void Reject(Exception error); |
@@ -7,6 +7,8 | |||
|
7 | 7 | <OutputType>Library</OutputType> |
|
8 | 8 | <RootNamespace>Implab</RootNamespace> |
|
9 | 9 | <AssemblyName>Implab</AssemblyName> |
|
10 | <ProductVersion>8.0.30703</ProductVersion> | |
|
11 | <SchemaVersion>2.0</SchemaVersion> | |
|
10 | 12 | </PropertyGroup> |
|
11 | 13 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|
12 | 14 | <DebugSymbols>true</DebugSymbols> |
@@ -156,6 +158,7 | |||
|
156 | 158 | <Compile Include="Diagnostics\ILogWriter.cs" /> |
|
157 | 159 | <Compile Include="Diagnostics\ListenerBase.cs" /> |
|
158 | 160 | <Compile Include="Parallels\BlockingQueue.cs" /> |
|
161 | <Compile Include="ICancelationToken.cs" /> | |
|
159 | 162 | </ItemGroup> |
|
160 | 163 | <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |
|
161 | 164 | <ItemGroup /> |
General Comments 0
You need to be logged in to leave comments.
Login now