1 | /// <reference types="node" />
|
2 | import { QueuePriority } from './QueuePriority';
|
3 | import { EventEmitter } from 'events';
|
4 | /**
|
5 | * @class Operation
|
6 | * @constructor Operation
|
7 | * @description Abstract class which runs a single task
|
8 | */
|
9 | export declare abstract class Operation<T> extends EventEmitter {
|
10 | id: string;
|
11 | result: T;
|
12 | name: string;
|
13 | completionCallback?: Function;
|
14 | map: Object;
|
15 | isExecuting: boolean;
|
16 | error: boolean;
|
17 | promise?: Promise<any>;
|
18 | runPromise?: Promise<any>;
|
19 | private _dependencies;
|
20 | private _done;
|
21 | private _isInQueue;
|
22 | private _canStart;
|
23 | private _cancelled;
|
24 | private _resolve;
|
25 | private _reject;
|
26 | private _queuePriority;
|
27 | /**
|
28 | * @param {number} [id]
|
29 | */
|
30 | constructor(id?: any);
|
31 | /**
|
32 | * @description Getter returning if Operation finished its task
|
33 | * @returns {boolean}
|
34 | */
|
35 | get isFinished(): boolean;
|
36 | /**
|
37 | * @description Knowing if operation was cancelled
|
38 | * @returns {boolean}
|
39 | */
|
40 | get isCancelled(): boolean;
|
41 | /**
|
42 | * Setter for isInQueue value
|
43 | * @param {boolean} value
|
44 | */
|
45 | set isInQueue(value: boolean);
|
46 | /**
|
47 | * Getter for isInQueue value
|
48 | */
|
49 | get isInQueue(): boolean;
|
50 | /**
|
51 | * Setter for queuePriority value.
|
52 | * It is only settable when operation has not yet executed, cancelled or finished
|
53 | * @param {QueuePriority} value
|
54 | */
|
55 | set queuePriority(value: QueuePriority);
|
56 | /**
|
57 | * Getter for queuePriority value
|
58 | * @returns {QueuePriority|number}
|
59 | */
|
60 | get queuePriority(): QueuePriority;
|
61 | /**
|
62 | * Setter for dependencies value.
|
63 | * It is only settable when operation has not yet executed, cancelled or finished
|
64 | * @param {Array.<Operation>} operations
|
65 | */
|
66 | set dependencies(operations: Operation<any>[]);
|
67 | /**
|
68 | * Getter for dependencies value.
|
69 | * When operation is executing, cancelled, or finished, this returns a copy
|
70 | * @returns {Array.<Operation>}
|
71 | */
|
72 | get dependencies(): Operation<any>[];
|
73 | /**
|
74 | * @abstract
|
75 | * @description Needs to be implemented by sub-class
|
76 | * This is the task to be executed
|
77 | */
|
78 | abstract run(): Promise<T>;
|
79 | /**
|
80 | * @description Cancels the operation if the operation has not started.
|
81 | * @returns {undefined}
|
82 | */
|
83 | cancel(): void;
|
84 | /**
|
85 | * @description Sets the operation as done. This is usually called internally or by the operationQueue
|
86 | * @returns {undefined}
|
87 | */
|
88 | done(): void;
|
89 | /**
|
90 | * @description Knowing if operation finished its task
|
91 | * @returns {boolean}
|
92 | */
|
93 | isDone(): boolean;
|
94 | /**
|
95 | * Adds an operation as a dependency
|
96 | * @param {Operation} dependency
|
97 | */
|
98 | addDependency(dependency: Operation<any>): void;
|
99 | /**
|
100 | * Removes an operation as a dependency
|
101 | * @param {Operation} dependency
|
102 | */
|
103 | removeDependency(dependency: Operation<any>): void;
|
104 | /**
|
105 | * Method to call to execute the operation's task.
|
106 | * The operation will not run immediatly. It is evaluated at the next tick and evaluates it's depedencies
|
107 | * in order to run. Calling this method multiples times will simply re-evaluate it's readiness
|
108 | * @returns {Promise}
|
109 | */
|
110 | start(): Promise<T>;
|
111 | /**
|
112 | */
|
113 | main(): void;
|
114 | private _preProcessStart;
|
115 | private _createMap;
|
116 | private _onDependantOperationDone;
|
117 | private _tryStart;
|
118 | }
|