-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTransferableWorkerTest2.ts
More file actions
44 lines (36 loc) · 1.68 KB
/
Copy pathTransferableWorkerTest2.ts
File metadata and controls
44 lines (36 loc) · 1.68 KB
1
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
import {
comRouting,
DataPayload,
WorkerTaskCommandResponse,
WorkerMessage,
WorkerTaskWorker
} from 'wtd-core';
class TransferableWorkerTest2 implements WorkerTaskWorker {
init(message: WorkerMessage) {
console.log(`TransferableWorkerTest2#init: name: ${message.name} uuid: ${message.uuid} cmd: ${message.cmd} workerId: ${message.endpointdId}`);
const initComplete = WorkerMessage.createFromExisting(message, {
overrideCmd: WorkerTaskCommandResponse.INIT_COMPLETE
});
self.postMessage(initComplete);
}
execute(message: WorkerMessage) {
console.log(`TransferableWorkerTest2#execute: name: ${message.name} uuid: ${message.uuid} cmd: ${message.cmd} workerId: ${message.endpointdId}`);
const wm = WorkerMessage.unpack(message, false);
if (wm.payloads.length === 1) {
const payload = wm.payloads[0] as DataPayload;
if (payload.message.params !== undefined) {
const payloadOut = new DataPayload();
payloadOut.message.buffers?.set('data', new Uint32Array(32 * 1024 * 1024));
const execComplete = WorkerMessage.createFromExisting(wm, {
overrideCmd: WorkerTaskCommandResponse.EXECUTE_COMPLETE
});
execComplete.name = payload.message.params.name as string;
execComplete.addPayload(payloadOut);
const transferables = WorkerMessage.pack(execComplete.payloads, false);
self.postMessage(execComplete, transferables);
}
}
}
}
const worker = new TransferableWorkerTest2();
self.onmessage = message => comRouting(worker, message);