| 
7
 | 
     1 using System;
 | 
| 
 | 
     2 using System.Collections.Generic;
 | 
| 
 | 
     3 using System.Linq;
 | 
| 
 | 
     4 using System.Text;
 | 
| 
 | 
     5 
 | 
| 
 | 
     6 namespace Implab
 | 
| 
 | 
     7 {
 | 
| 
 | 
     8     public interface IPromise
 | 
| 
 | 
     9     {
 | 
| 
 | 
    10         /// <summary>
 | 
| 
 | 
    11         /// Check whereather the promise has no more than one dependent promise.
 | 
| 
 | 
    12         /// </summary>
 | 
| 
 | 
    13         bool IsExclusive
 | 
| 
 | 
    14         {
 | 
| 
 | 
    15             get;
 | 
| 
 | 
    16         }
 | 
| 
 | 
    17 
 | 
| 
 | 
    18         /// <summary>
 | 
| 
 | 
    19         /// The current state of the promise.
 | 
| 
 | 
    20         /// </summary>
 | 
| 
 | 
    21         PromiseState State
 | 
| 
 | 
    22         {
 | 
| 
 | 
    23             get;
 | 
| 
 | 
    24         }
 | 
| 
 | 
    25 
 | 
| 
 | 
    26         /// <summary>
 | 
| 
11
 | 
    27         /// Tries to cancel the the complete chain of promises.
 | 
| 
7
 | 
    28         /// </summary>
 | 
| 
11
 | 
    29         /// <returns><c>true</c> -  if the promise has been cancelled, otherwise the promise will be resolved (or resolved already).</returns>
 | 
| 
 | 
    30         bool Cancel();
 | 
| 
10
 | 
    31 
 | 
| 
 | 
    32         /// <summary>
 | 
| 
 | 
    33         /// Registers handler for the case when the promise is cencelled. If the promise already cancelled the
 | 
| 
 | 
    34         /// handler will be invoked immediatelly.
 | 
| 
 | 
    35         /// </summary>
 | 
| 
 | 
    36         /// <param name="handler">The handler</param>
 | 
| 
 | 
    37         void HandleCancelled(Action handler);
 | 
| 
7
 | 
    38     }
 | 
| 
 | 
    39 }
 |