@eggjs/cluster 4.0.0-beta.19 → 4.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent_worker.d.ts +1 -1
- package/dist/agent_worker.js +63 -50
- package/dist/app_worker.d.ts +1 -1
- package/dist/app_worker.js +165 -127
- package/dist/dirname.d.ts +1 -0
- package/dist/dirname.js +10 -10
- package/dist/error/ClusterAgentWorkerError.d.ts +9 -12
- package/dist/error/ClusterAgentWorkerError.js +19 -22
- package/dist/error/ClusterWorkerExceptionError.d.ts +6 -9
- package/dist/error/ClusterWorkerExceptionError.js +14 -17
- package/dist/error/index.d.ts +2 -0
- package/dist/error/index.js +3 -0
- package/dist/index.d.ts +5 -10
- package/dist/index.js +16 -20
- package/dist/master.d.ts +86 -92
- package/dist/master.js +543 -416
- package/dist/utils/messenger.d.ts +44 -48
- package/dist/utils/messenger.js +178 -143
- package/dist/utils/mode/base/agent.d.ts +35 -42
- package/dist/utils/mode/base/agent.js +64 -62
- package/dist/utils/mode/base/app.d.ts +45 -53
- package/dist/utils/mode/base/app.js +79 -76
- package/dist/utils/mode/impl/process/agent.d.ts +16 -20
- package/dist/utils/mode/impl/process/agent.js +101 -91
- package/dist/utils/mode/impl/process/app.d.ts +20 -11
- package/dist/utils/mode/impl/process/app.js +118 -116
- package/dist/utils/mode/impl/worker_threads/agent.d.ts +16 -20
- package/dist/utils/mode/impl/worker_threads/agent.js +82 -77
- package/dist/utils/mode/impl/worker_threads/app.d.ts +25 -12
- package/dist/utils/mode/impl/worker_threads/app.js +137 -128
- package/dist/utils/options.d.ts +76 -79
- package/dist/utils/options.js +80 -55
- package/dist/utils/terminate.d.ts +6 -0
- package/dist/utils/terminate.js +70 -51
- package/dist/utils/worker_manager.d.ts +24 -31
- package/dist/utils/worker_manager.js +74 -68
- package/package.json +6 -6
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
receiverWorkerId?: string;
|
|
16
|
-
senderWorkerId?: string;
|
|
1
|
+
import type { Master } from '../master.ts';
|
|
2
|
+
import type { WorkerManager } from './worker_manager.ts';
|
|
3
|
+
export type MessageCharacter = 'agent' | 'app' | 'master' | 'parent';
|
|
4
|
+
export interface MessageBody {
|
|
5
|
+
action: string;
|
|
6
|
+
data?: unknown;
|
|
7
|
+
to?: MessageCharacter;
|
|
8
|
+
from?: MessageCharacter;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Keep compatible, please use receiverWorkerId instead
|
|
11
|
+
*/
|
|
12
|
+
receiverPid?: string;
|
|
13
|
+
receiverWorkerId?: string;
|
|
14
|
+
senderWorkerId?: string;
|
|
17
15
|
}
|
|
18
16
|
/**
|
|
19
17
|
* master messenger, provide communication between parent, master, agent and app.
|
|
@@ -61,36 +59,34 @@ interface MessageBody {
|
|
|
61
59
|
* });
|
|
62
60
|
* ```
|
|
63
61
|
*/
|
|
64
|
-
declare class Messenger {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
62
|
+
export declare class Messenger {
|
|
63
|
+
#private;
|
|
64
|
+
constructor(master: Master, workerManager: WorkerManager);
|
|
65
|
+
/**
|
|
66
|
+
* send message
|
|
67
|
+
* @param {Object} data message body
|
|
68
|
+
* - {String} from from who
|
|
69
|
+
* - {String} to to who
|
|
70
|
+
*/
|
|
71
|
+
send(data: MessageBody): void;
|
|
72
|
+
/**
|
|
73
|
+
* send message to master self
|
|
74
|
+
* @param {Object} data message body
|
|
75
|
+
*/
|
|
76
|
+
sendToMaster(data: MessageBody): void;
|
|
77
|
+
/**
|
|
78
|
+
* send message to parent process
|
|
79
|
+
* @param {Object} data message body
|
|
80
|
+
*/
|
|
81
|
+
sendToParent(data: MessageBody): void;
|
|
82
|
+
/**
|
|
83
|
+
* send message to app worker
|
|
84
|
+
* @param {Object} data message body
|
|
85
|
+
*/
|
|
86
|
+
sendToAppWorker(data: MessageBody): void;
|
|
87
|
+
/**
|
|
88
|
+
* send message to agent worker
|
|
89
|
+
* @param {Object} data message body
|
|
90
|
+
*/
|
|
91
|
+
sendToAgentWorker(data: MessageBody): void;
|
|
94
92
|
}
|
|
95
|
-
//#endregion
|
|
96
|
-
export { MessageBody, Messenger };
|
package/dist/utils/messenger.js
CHANGED
|
@@ -1,144 +1,179 @@
|
|
|
1
|
-
import { debuglog } from
|
|
2
|
-
import workerThreads from
|
|
3
|
-
|
|
4
|
-
//#region src/utils/messenger.ts
|
|
5
|
-
const debug = debuglog("egg/cluster/messenger");
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import workerThreads from 'node:worker_threads';
|
|
3
|
+
const debug = debuglog('egg/cluster/messenger');
|
|
6
4
|
/**
|
|
7
|
-
* master messenger, provide communication between parent, master, agent and app.
|
|
8
|
-
*
|
|
9
|
-
* ┌────────┐
|
|
10
|
-
* │ parent │
|
|
11
|
-
* /└────────┘\
|
|
12
|
-
* / | \
|
|
13
|
-
* / ┌────────┐ \
|
|
14
|
-
* / │ master │ \
|
|
15
|
-
* / └────────┘ \
|
|
16
|
-
* / / \ \
|
|
17
|
-
* ┌───────┐ ┌───────┐
|
|
18
|
-
* │ agent │ ------- │ app │
|
|
19
|
-
* └───────┘ └───────┘
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* in app worker
|
|
23
|
-
*
|
|
24
|
-
* ```js
|
|
25
|
-
* process.send({
|
|
26
|
-
* action: 'xxx',
|
|
27
|
-
* data: '',
|
|
28
|
-
* to: 'agent/master/parent', // default to agent
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* in agent worker
|
|
33
|
-
*
|
|
34
|
-
* ```js
|
|
35
|
-
* process.send({
|
|
36
|
-
* action: 'xxx',
|
|
37
|
-
* data: '',
|
|
38
|
-
* to: 'app/master/parent', // default to app
|
|
39
|
-
* });
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* in parent
|
|
43
|
-
*
|
|
44
|
-
* ```js
|
|
45
|
-
* process.send({
|
|
46
|
-
* action: 'xxx',
|
|
47
|
-
* data: '',
|
|
48
|
-
* to: 'app/agent/master', // default to master
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
5
|
+
* master messenger, provide communication between parent, master, agent and app.
|
|
6
|
+
*
|
|
7
|
+
* ┌────────┐
|
|
8
|
+
* │ parent │
|
|
9
|
+
* /└────────┘\
|
|
10
|
+
* / | \
|
|
11
|
+
* / ┌────────┐ \
|
|
12
|
+
* / │ master │ \
|
|
13
|
+
* / └────────┘ \
|
|
14
|
+
* / / \ \
|
|
15
|
+
* ┌───────┐ ┌───────┐
|
|
16
|
+
* │ agent │ ------- │ app │
|
|
17
|
+
* └───────┘ └───────┘
|
|
18
|
+
*
|
|
19
|
+
*
|
|
20
|
+
* in app worker
|
|
21
|
+
*
|
|
22
|
+
* ```js
|
|
23
|
+
* process.send({
|
|
24
|
+
* action: 'xxx',
|
|
25
|
+
* data: '',
|
|
26
|
+
* to: 'agent/master/parent', // default to agent
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* in agent worker
|
|
31
|
+
*
|
|
32
|
+
* ```js
|
|
33
|
+
* process.send({
|
|
34
|
+
* action: 'xxx',
|
|
35
|
+
* data: '',
|
|
36
|
+
* to: 'app/master/parent', // default to app
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* in parent
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* process.send({
|
|
44
|
+
* action: 'xxx',
|
|
45
|
+
* data: '',
|
|
46
|
+
* to: 'app/agent/master', // default to master
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export class Messenger {
|
|
51
|
+
#master;
|
|
52
|
+
#workerManager;
|
|
53
|
+
#hasParent;
|
|
54
|
+
constructor(master, workerManager) {
|
|
55
|
+
this.#master = master;
|
|
56
|
+
this.#workerManager = workerManager;
|
|
57
|
+
this.#hasParent = !!workerThreads.parentPort || !!process.send;
|
|
58
|
+
process.on('message', (msg) => {
|
|
59
|
+
msg.from = 'parent';
|
|
60
|
+
this.send(msg);
|
|
61
|
+
});
|
|
62
|
+
process.once('disconnect', () => {
|
|
63
|
+
this.#hasParent = false;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* send message
|
|
68
|
+
* @param {Object} data message body
|
|
69
|
+
* - {String} from from who
|
|
70
|
+
* - {String} to to who
|
|
71
|
+
*/
|
|
72
|
+
send(data) {
|
|
73
|
+
if (!data.from) {
|
|
74
|
+
data.from = 'master';
|
|
75
|
+
}
|
|
76
|
+
// https://github.com/eggjs/egg/blob/b6861f1c7548f05a281386050dfeaeb30f236558/lib/core/messenger/ipc.js#L56
|
|
77
|
+
// recognize receiverWorkerId is to who
|
|
78
|
+
const receiverWorkerId = data.receiverWorkerId ?? data.receiverPid;
|
|
79
|
+
if (receiverWorkerId) {
|
|
80
|
+
if (receiverWorkerId === String(process.pid)) {
|
|
81
|
+
data.to = 'master';
|
|
82
|
+
}
|
|
83
|
+
else if (receiverWorkerId === String(this.#workerManager.getAgent().workerId)) {
|
|
84
|
+
data.to = 'agent';
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
data.to = 'app';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// default from -> to rules
|
|
91
|
+
if (!data.to) {
|
|
92
|
+
if (data.from === 'agent') {
|
|
93
|
+
data.to = 'app';
|
|
94
|
+
}
|
|
95
|
+
if (data.from === 'app') {
|
|
96
|
+
data.to = 'agent';
|
|
97
|
+
}
|
|
98
|
+
if (data.from === 'parent') {
|
|
99
|
+
data.to = 'master';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// app -> master
|
|
103
|
+
// agent -> master
|
|
104
|
+
if (data.to === 'master') {
|
|
105
|
+
debug('%s -> master, data: %j', data.from, data);
|
|
106
|
+
// app/agent to master
|
|
107
|
+
this.sendToMaster(data);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// master -> parent
|
|
111
|
+
// app -> parent
|
|
112
|
+
// agent -> parent
|
|
113
|
+
if (data.to === 'parent') {
|
|
114
|
+
debug('%s -> parent, data: %j', data.from, data);
|
|
115
|
+
this.sendToParent(data);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// parent -> master -> app
|
|
119
|
+
// agent -> master -> app
|
|
120
|
+
if (data.to === 'app') {
|
|
121
|
+
debug('%s -> %s, data: %j', data.from, data.to, data);
|
|
122
|
+
this.sendToAppWorker(data);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// parent -> master -> agent
|
|
126
|
+
// app -> master -> agent,可能不指定 to
|
|
127
|
+
if (data.to === 'agent') {
|
|
128
|
+
debug('%s -> %s, data: %j', data.from, data.to, data);
|
|
129
|
+
this.sendToAgentWorker(data);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* send message to master self
|
|
135
|
+
* @param {Object} data message body
|
|
136
|
+
*/
|
|
137
|
+
sendToMaster(data) {
|
|
138
|
+
// e.g: master.on('app-start', data => {})
|
|
139
|
+
this.#master.emit(data.action, data.data);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* send message to parent process
|
|
143
|
+
* @param {Object} data message body
|
|
144
|
+
*/
|
|
145
|
+
sendToParent(data) {
|
|
146
|
+
if (!this.#hasParent) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
process.send(data);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* send message to app worker
|
|
153
|
+
* @param {Object} data message body
|
|
154
|
+
*/
|
|
155
|
+
sendToAppWorker(data) {
|
|
156
|
+
for (const worker of this.#workerManager.listWorkers()) {
|
|
157
|
+
if (worker.state === 'disconnected') {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
// check receiverWorkerId
|
|
161
|
+
const receiverWorkerId = data.receiverWorkerId ?? data.receiverPid;
|
|
162
|
+
if (receiverWorkerId && receiverWorkerId !== String(worker.workerId)) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
worker.send(data);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* send message to agent worker
|
|
170
|
+
* @param {Object} data message body
|
|
171
|
+
*/
|
|
172
|
+
sendToAgentWorker(data) {
|
|
173
|
+
const agent = this.#workerManager.getAgent();
|
|
174
|
+
if (agent) {
|
|
175
|
+
agent.send(data);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2VuZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21lc3Nlbmdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBS2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBaUJoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDcEIsT0FBTyxDQUFTO0lBQ2hCLGNBQWMsQ0FBZ0I7SUFDOUIsVUFBVSxDQUFVO0lBRXBCLFlBQVksTUFBYyxFQUFFLGFBQTRCO1FBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDL0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFnQixFQUFFLEVBQUU7WUFDekMsR0FBRyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxJQUFpQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFB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
|
|
@@ -1,45 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
static kill(): void;
|
|
21
|
-
static gracefulExit(_options: any): void;
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import type { ChildProcess } from 'node:child_process';
|
|
3
|
+
import type { Worker } from 'node:worker_threads';
|
|
4
|
+
import type { Logger } from 'egg-logger';
|
|
5
|
+
import type { MasterOptions } from '../../../master.ts';
|
|
6
|
+
import type { MessageBody, Messenger } from '../../messenger.ts';
|
|
7
|
+
export declare abstract class BaseAgentWorker<T = ChildProcess | Worker> {
|
|
8
|
+
#private;
|
|
9
|
+
instance: T;
|
|
10
|
+
constructor(instance: T);
|
|
11
|
+
abstract get workerId(): number;
|
|
12
|
+
get id(): number;
|
|
13
|
+
set id(id: number);
|
|
14
|
+
get status(): string;
|
|
15
|
+
set status(status: string);
|
|
16
|
+
abstract send(message: MessageBody): void;
|
|
17
|
+
static send(_message: MessageBody): void;
|
|
18
|
+
static kill(): void;
|
|
19
|
+
static gracefulExit(_options: any): void;
|
|
22
20
|
}
|
|
23
21
|
type LogFun = (msg: any, ...args: any[]) => void;
|
|
24
|
-
declare abstract class BaseAgentUtils extends EventEmitter {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
getAgentWorkerFile(): string;
|
|
40
|
-
fork(): void;
|
|
41
|
-
clean(): void;
|
|
42
|
-
abstract kill(timeout: number): Promise<void>;
|
|
22
|
+
export declare abstract class BaseAgentUtils extends EventEmitter {
|
|
23
|
+
protected options: MasterOptions;
|
|
24
|
+
protected messenger: Messenger;
|
|
25
|
+
protected log: LogFun;
|
|
26
|
+
protected logger: Logger;
|
|
27
|
+
startTime: number;
|
|
28
|
+
constructor(options: MasterOptions, { log, logger, messenger, }: {
|
|
29
|
+
log: LogFun;
|
|
30
|
+
logger: Logger;
|
|
31
|
+
messenger: Messenger;
|
|
32
|
+
});
|
|
33
|
+
getAgentWorkerFile(): string;
|
|
34
|
+
fork(): void;
|
|
35
|
+
clean(): void;
|
|
36
|
+
abstract kill(timeout: number): Promise<void>;
|
|
43
37
|
}
|
|
44
|
-
|
|
45
|
-
export { BaseAgentUtils, BaseAgentWorker };
|
|
38
|
+
export {};
|
|
@@ -1,63 +1,65 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { EventEmitter } from 'node:events';
|
|
1
4
|
import { getSrcDirname } from "../../../dirname.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
//#
|
|
63
|
-
export { BaseAgentUtils, BaseAgentWorker };
|
|
5
|
+
export class BaseAgentWorker {
|
|
6
|
+
instance;
|
|
7
|
+
#instanceId;
|
|
8
|
+
#instanceStatus;
|
|
9
|
+
constructor(instance) {
|
|
10
|
+
this.instance = instance;
|
|
11
|
+
}
|
|
12
|
+
get id() {
|
|
13
|
+
return this.#instanceId;
|
|
14
|
+
}
|
|
15
|
+
set id(id) {
|
|
16
|
+
this.#instanceId = id;
|
|
17
|
+
}
|
|
18
|
+
get status() {
|
|
19
|
+
return this.#instanceStatus;
|
|
20
|
+
}
|
|
21
|
+
set status(status) {
|
|
22
|
+
this.#instanceStatus = status;
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
static send(_message) {
|
|
26
|
+
throw new Error('BaseAgentWorker should implement send.');
|
|
27
|
+
}
|
|
28
|
+
static kill() {
|
|
29
|
+
throw new Error('BaseAgentWorker should implement kill.');
|
|
30
|
+
}
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
static gracefulExit(_options) {
|
|
33
|
+
throw new Error('BaseAgentWorker should implement gracefulExit.');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class BaseAgentUtils extends EventEmitter {
|
|
37
|
+
options;
|
|
38
|
+
messenger;
|
|
39
|
+
log;
|
|
40
|
+
logger;
|
|
41
|
+
// public attrs
|
|
42
|
+
startTime = 0;
|
|
43
|
+
constructor(options, { log, logger, messenger, }) {
|
|
44
|
+
super();
|
|
45
|
+
this.options = options;
|
|
46
|
+
this.log = log;
|
|
47
|
+
this.logger = logger;
|
|
48
|
+
this.messenger = messenger;
|
|
49
|
+
// this.instance = null;
|
|
50
|
+
}
|
|
51
|
+
getAgentWorkerFile() {
|
|
52
|
+
let agentWorkerFile = path.join(getSrcDirname(), 'agent_worker.js');
|
|
53
|
+
if (!existsSync(agentWorkerFile)) {
|
|
54
|
+
agentWorkerFile = path.join(getSrcDirname(), 'agent_worker.ts');
|
|
55
|
+
}
|
|
56
|
+
return agentWorkerFile;
|
|
57
|
+
}
|
|
58
|
+
fork() {
|
|
59
|
+
throw new Error('BaseAgent should implement fork.');
|
|
60
|
+
}
|
|
61
|
+
clean() {
|
|
62
|
+
throw new Error('BaseAgent should implement clean.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbW9kZS9iYXNlL2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFRM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sT0FBZ0IsZUFBZTtJQUNuQyxRQUFRLENBQUk7SUFDWixXQUFXLENBQVM7SUFDcEIsZUFBZSxDQUFTO0lBRXhCLFlBQVksUUFBVztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBSUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTTtRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFJRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFxQjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFJRCxNQUFNLE9BQWdCLGNBQWUsU0FBUSxZQUFZO0lBQzdDLE9BQU8sQ0FBZ0I7SUFDdkIsU0FBUyxDQUFZO0lBQ3JCLEdBQUcsQ0FBUztJQUNaLE1BQU0sQ0FBUztJQUN6QixlQUFlO0lBQ2YsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVkLFlBQ0UsT0FBc0IsRUFDdEIsRUFDRSxHQUFHLEVBQ0gsTUFBTSxFQUNOLFNBQVMsR0FLVjtRQUVELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQix3QkFBd0I7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2pDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FHRiJ9
|