comparison Implab/Components/IRunnable.cs @ 251:7c7e9ad6fe4a v3

Prerelease version of RunnableComponent Added draft messaging interfaces Added more more helpers to Xml/SerializationHelpers
author cin
date Sun, 11 Feb 2018 00:49:51 +0300
parents 9f63dade3a40
children c52691faaf21
comparison
equal deleted inserted replaced
250:9f63dade3a40 251:7c7e9ad6fe4a
4 4
5 namespace Implab.Components { 5 namespace Implab.Components {
6 /// <summary> 6 /// <summary>
7 /// Interface for the component which performs a long running task. 7 /// Interface for the component which performs a long running task.
8 /// </summary> 8 /// </summary>
9 public interface IRunnable : IDisposable { 9 /// <remarks>
10 /// The access to the runnable component should be sequential, the
11 /// componet should support asynchronous completion of the initiated
12 /// operation but operations itself must be initiated sequentially.
13 /// </remarks>
14 public interface IRunnable {
10 /// <summary> 15 /// <summary>
11 /// Starts this instance 16 /// Starts this instance
12 /// </summary> 17 /// </summary>
18 /// <remarks>
19 /// This operation is cancellable and it's expected to move to
20 /// the failed state or just ignore the cancellation request,
21 /// </remarks>
13 void Start(CancellationToken ct); 22 void Start(CancellationToken ct);
14 23
15 /// <summary> 24 /// <summary>
16 /// Stops this instance and releases all resources, after the instance is stopped it is moved to Disposed state and can't be reused. 25 /// Stops this instance and releases all resources, after the
26 /// instance is stopped it is moved to Disposed state and
27 /// can't be reused.
17 /// </summary> 28 /// </summary>
29 /// <remarks>
30 /// If the componet was in the starting state the pending operation
31 /// will be requested to cancel. The stop operatin will be
32 /// performed only if the component in the running state.
33 /// </remarks>
18 void Stop(CancellationToken ct); 34 void Stop(CancellationToken ct);
19 35
20 Task<ExecutionState> Completion { get; } 36 /// <summary>
37 /// The result of the last started operation. This property reflects
38 /// only the result of the last started operation and therefore should
39 /// change only if a new operation is initiated.
40 /// </summary>
41 Task Completion { get; }
21 42
43 /// <summary>
44 /// Current state of the componenet
45 /// </summary>
22 ExecutionState State { get; } 46 ExecutionState State { get; }
23 47
48 /// <summary>
49 /// Event to monitor the state of the component.
50 /// </summary>
24 event EventHandler<StateChangeEventArgs> StateChanged; 51 event EventHandler<StateChangeEventArgs> StateChanged;
25 52
53 /// <summary>
54 /// The last error
55 /// </summary>
26 Exception LastError { get; } 56 Exception LastError { get; }
27 } 57 }
28 } 58 }
29 59