annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
1 using System;
250
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
2 using System.Threading;
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
3 using System.Threading.Tasks;
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
4
240aa6994018 component model refactoring
cin
parents:
diff changeset
5 namespace Implab.Components {
250
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
6 /// <summary>
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
7 /// Interface for the component which performs a long running task.
208
7d07503621fe RunnableComponent.Dispose(bool,Exception) changed to standart Dispose(bool)
cin
parents: 205
diff changeset
8 /// </summary>
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
9 /// <remarks>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
10 /// The access to the runnable component should be sequential, the
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
11 /// componet should support asynchronous completion of the initiated
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
12 /// operation but operations itself must be initiated sequentially.
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
13 /// </remarks>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
14 public interface IRunnable {
203
4d9830a9bbb8 Added 'Fail' method to RunnableComponent which allows component to move from
cin
parents: 152
diff changeset
15 /// <summary>
208
7d07503621fe RunnableComponent.Dispose(bool,Exception) changed to standart Dispose(bool)
cin
parents: 205
diff changeset
16 /// Starts this instance
203
4d9830a9bbb8 Added 'Fail' method to RunnableComponent which allows component to move from
cin
parents: 152
diff changeset
17 /// </summary>
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
18 /// <remarks>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
19 /// This operation is cancellable and it's expected to move to
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
20 /// the failed state or just ignore the cancellation request,
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
21 /// </remarks>
250
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
22 void Start(CancellationToken ct);
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
23
203
4d9830a9bbb8 Added 'Fail' method to RunnableComponent which allows component to move from
cin
parents: 152
diff changeset
24 /// <summary>
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
25 /// Stops this instance and releases all resources, after the
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
26 /// instance is stopped it is moved to Disposed state and
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
27 /// can't be reused.
203
4d9830a9bbb8 Added 'Fail' method to RunnableComponent which allows component to move from
cin
parents: 152
diff changeset
28 /// </summary>
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
29 /// <remarks>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
30 /// If the componet was in the starting state the pending operation
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
31 /// will be requested to cancel. The stop operatin will be
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
32 /// performed only if the component in the running state.
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
33 /// </remarks>
250
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
34 void Stop(CancellationToken ct);
9f63dade3a40 Working on runnable component
cin
parents: 208
diff changeset
35
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
36 /// <summary>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
37 /// The result of the last started operation. This property reflects
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
38 /// only the result of the last started operation and therefore should
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
39 /// change only if a new operation is initiated.
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
40 /// </summary>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
41 Task Completion { get; }
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
42
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
43 /// <summary>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
44 /// Current state of the componenet
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
45 /// </summary>
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
46 ExecutionState State { get; }
240aa6994018 component model refactoring
cin
parents:
diff changeset
47
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
48 /// <summary>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
49 /// Event to monitor the state of the component.
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
50 /// </summary>
205
8200ab154c8a Added ResetState to RunnableComponent to reset in case of failure
cin
parents: 203
diff changeset
51 event EventHandler<StateChangeEventArgs> StateChanged;
8200ab154c8a Added ResetState to RunnableComponent to reset in case of failure
cin
parents: 203
diff changeset
52
251
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
53 /// <summary>
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
54 /// The last error
7c7e9ad6fe4a Prerelease version of RunnableComponent
cin
parents: 250
diff changeset
55 /// </summary>
152
240aa6994018 component model refactoring
cin
parents:
diff changeset
56 Exception LastError { get; }
240aa6994018 component model refactoring
cin
parents:
diff changeset
57 }
240aa6994018 component model refactoring
cin
parents:
diff changeset
58 }
240aa6994018 component model refactoring
cin
parents:
diff changeset
59