You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: rfcs/0014-task-workers.md
+16-13Lines changed: 16 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,12 +32,12 @@ The pool should also be re-used when multiple projects are being built, either i
32
32
*`Worker`: A Node.js [Worker thread](https://nodejs.org/api/worker_threads.html) instance
33
33
*`Build Task`: A UI5 Tooling build task such as "minify" or "buildThemes" (standard tasks) or any [custom task](https://sap.github.io/ui5-tooling/stable/pages/extensibility/CustomTasks/)
34
34
*`Task Processor`: A module associated with a UI5 Tooling Build Task (standard or custom) that can be executed in a `Worker`
35
-
*`Dispatch Broker`: A ui5-project module coupled to the lifecycle of a Graph Build (similar to the `ProjectBuildContext`). It forwards requests from Build Tasks
35
+
*`Build Context`: An already existing ui5-project module, coupled to the lifecycle of a Graph Build. It shall be extended to provide access to the `Work Dispatcher` by forwarding requests from `Build Tasks`
36
36
*`Thread Runner`: A ui5-project module that will be loaded in a `Worker`. It handles communication with the main thread and executes a `Task Processor` on request
37
-
*`Dispatcher`: A ui5-project singleton module which uses a library like [`workerpool`](https://github.com/josdejong/workerpool) to spawn and manage `Worker` instances in order to have them execute any `Task Processor` requested by the Build Task
37
+
*`Work Dispatcher`: A ui5-project singleton module which uses a library like [`workerpool`](https://github.com/josdejong/workerpool) to spawn and manage `Worker` instances in order to have them execute any `Task Processor` requested by the Build Task
38
38
- Handles the `Worker` lifecycle
39
39
40
-

40
+

41
41
42
42
### Key Design Decisions
43
43
@@ -61,21 +61,23 @@ The pool should also be re-used when multiple projects are being built, either i
61
61
Similar to Tasks, Task Processors shall be invoked with a well defined signature:
62
62
63
63
*`resources`: An array of `@ui5/fs/Resource` provided by the Build Task
64
-
*`options`: An object provided by the build task
65
-
*`workspace`: Reader to read project files
66
-
*`dependencies`: Reader or collection to read dependency files
64
+
*`options`: An object provided by the Build Task
65
+
*`fs`: An optional fs-interface provided by the Build Task
66
+
**[To be discussed]`workspace`: An optional workspace __reader__ provided by the Build Task*
67
+
**[To be discussed]`dependencies`: An optional dependencies reader provided by the Build Task*
68
+
**[To be discussed]`reader`: An optional generic reader provided by the Build Task*
67
69
68
70
```js
69
71
/**
70
72
* Task Processor example
71
73
*
72
74
* @param{Object}parameters Parameters
73
-
* @param{DuplexCollection}parameters.workspace DuplexCollection to read and write files
74
-
* @param{AbstractReader}parameters.dependencies Reader or Collection to read dependency files
75
+
* @param{@ui5/fs/Resource[]}parameters.resources Array of resources provided by the build task
75
76
* @param{Object}parameters.options Options provided by the calling task
76
-
* @returns{Promise<object>} Promise resolving with an object containing the result of the process in an arbitrary format
77
+
* @param{@ui5/fs/fsInterface}parameters.fs[fs interface]{@linkmodule:@ui5/fs/fsInterface}-like class that internally handles communication with the main thread
78
+
* @returns{Promise<object|@ui5/fs/Resource[]>} Promise resolving with either a flat object containing Resource instances as values, or an array of Resources
0 commit comments