UNPKG

3.41 kBTypeScriptView Raw
1/// <reference types="node" />
2import { QueuePriority } from './QueuePriority';
3import { EventEmitter } from 'events';
4/**
5 * @class Operation
6 * @constructor Operation
7 * @description Abstract class which runs a single task
8 */
9export 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}