diff Implab/ICancellationToken.cs @ 145:706fccb85524 v2

RC: cancellation support for promises + tests
author cin
date Sun, 08 Mar 2015 02:52:27 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/ICancellationToken.cs	Sun Mar 08 02:52:27 2015 +0300
@@ -0,0 +1,36 @@
+using System;
+
+namespace Implab {
+    public interface ICancellationToken {
+        /// <summary>
+        /// Indicates wherther the cancellation was requested.
+        /// </summary>
+        bool IsCancellationRequested { get ; }
+
+        /// <summary>
+        /// The reason why the operation should be cancelled.
+        /// </summary>
+        Exception CancellationReason { get ; }
+
+        /// <summary>
+        /// Accepts if requested.
+        /// </summary>
+        /// <returns><c>true</c>, if if requested was accepted, <c>false</c> otherwise.</returns>
+        bool CancelOperationIfRequested();
+
+        /// <summary>
+        /// Sets the token to cancelled state.
+        /// </summary>
+        /// <param name="reason">The reason why the operation was cancelled.</param>
+        void CancelOperation(Exception reason);
+
+        /// <summary>
+        /// Adds the listener for the cancellation request, is the cancellation was requested the <paramref name="handler"/>
+        /// is executed immediatelly.
+        /// </summary>
+        /// <param name="handler">The handler which will be executed if the cancel occurs.</param>
+        void CancellationRequested(Action<Exception> handler);
+
+    }
+}
+