@remix_labs/machine-starter 2.3134.0-dev → 2.3138.0-dev
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/common.js +53 -0
- package/groovebox_build.js +1 -1
- package/package.json +2 -2
package/common.js
CHANGED
|
@@ -5,18 +5,31 @@ import { MixcoreTauri, filterFFINames } from "./mixcore.lib.mjs";
|
|
|
5
5
|
let workers = {};
|
|
6
6
|
let children = {};
|
|
7
7
|
let ffiLoops = {};
|
|
8
|
+
let blobs = {};
|
|
9
|
+
let blobsLoops = {};
|
|
8
10
|
|
|
9
11
|
function terminateAll() {
|
|
10
12
|
console.log("[groovebox-starter] terminate all VMs");
|
|
11
13
|
for (let [vmID, worker] of Object.entries(workers)) {
|
|
12
14
|
worker.terminate();
|
|
13
15
|
};
|
|
16
|
+
for (let [vmID, blobs] of Object.entries(blobs)) {
|
|
17
|
+
for (let blob_url of blobs) {
|
|
18
|
+
console.log("[groovebox-starter] revoke ", blob_url);
|
|
19
|
+
URL.revokeObjectURL(blob_url);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
14
22
|
for (let ffiLoop of Object.values(ffiLoops)) {
|
|
15
23
|
ffiLoop.terminate();
|
|
16
24
|
}
|
|
25
|
+
for (let blobsLoop of Object.values(blobsLoops)) {
|
|
26
|
+
blobsLoop.terminate();
|
|
27
|
+
}
|
|
17
28
|
workers = {};
|
|
18
29
|
children = {};
|
|
19
30
|
ffiLoops = {};
|
|
31
|
+
blobs = {};
|
|
32
|
+
blobsLoops = {};
|
|
20
33
|
}
|
|
21
34
|
|
|
22
35
|
function terminateVM(vmID) {
|
|
@@ -24,12 +37,22 @@ function terminateVM(vmID) {
|
|
|
24
37
|
let worker = workers[vmID];
|
|
25
38
|
if (worker) {
|
|
26
39
|
let vmChildren = children[vmID];
|
|
40
|
+
let blobList = blobs[vmID] || [];
|
|
27
41
|
let ffiLoop = ffiLoops[vmID];
|
|
42
|
+
let blobsLoop = blobsLoops[vmID];
|
|
28
43
|
delete workers[vmID];
|
|
29
44
|
delete children[vmID];
|
|
30
45
|
delete ffiLoops[vmID];
|
|
46
|
+
delete blobsLoops[vmID];
|
|
31
47
|
worker.terminate();
|
|
32
48
|
ffiLoop.terminate();
|
|
49
|
+
if (blobsLoop) {
|
|
50
|
+
blobsLoop.terminate();
|
|
51
|
+
}
|
|
52
|
+
for (let blob_url of blobList) {
|
|
53
|
+
console.log("[groovebox-starter] revoke ", blob_url);
|
|
54
|
+
URL.revokeObjectURL(blob_url);
|
|
55
|
+
};
|
|
33
56
|
if (vmChildren) {
|
|
34
57
|
for (let subID of vmChildren) {
|
|
35
58
|
terminateVM(subID)
|
|
@@ -116,6 +139,7 @@ async function StartWASM2(hub, config) {
|
|
|
116
139
|
}
|
|
117
140
|
};
|
|
118
141
|
ffiLoops[config.vmID] = setupLocalFFIs(hub, config, localFFIfuns);
|
|
142
|
+
blobsLoops[config.vmID] = setupBlobs(hub, config);
|
|
119
143
|
let config_msg =
|
|
120
144
|
{ "_rmx_type": "msg_vm_configure",
|
|
121
145
|
"baseURL": config.baseURL,
|
|
@@ -337,6 +361,35 @@ async function localFFIsMessageLoop(hub, config, localFFIs, terminate) {
|
|
|
337
361
|
}
|
|
338
362
|
}
|
|
339
363
|
|
|
364
|
+
function setupBlobs(hub, config) {
|
|
365
|
+
let vmID = config.vmID;
|
|
366
|
+
let terminate = Promise.withResolvers();
|
|
367
|
+
blobsMessageLoop(hub, config, terminate.promise); // don't wait
|
|
368
|
+
return {terminate: terminate.resolve};
|
|
369
|
+
}
|
|
370
|
+
async function blobsMessageLoop(hub, config, terminate) {
|
|
371
|
+
let vmID = config.vmID;
|
|
372
|
+
let channel = await hub.newChannel();
|
|
373
|
+
let comm = new FFIComm(vmID, hub, channel);
|
|
374
|
+
let sub = await channel.subscribe("/local/" + vmID + "/blobs");
|
|
375
|
+
while (true) {
|
|
376
|
+
let {msg, terminated} = await Promise.race([
|
|
377
|
+
sub.next().then((msg) => ({msg})),
|
|
378
|
+
terminate.then(() => ({terminated: true})),
|
|
379
|
+
]);
|
|
380
|
+
if (terminated) {
|
|
381
|
+
console.log("[groovebox-starter] terminate blobs loop", vmID);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
let name = msg.payload.name;
|
|
385
|
+
let url = msg.payload.url;
|
|
386
|
+
let blobList = blobs[vmID];
|
|
387
|
+
if (!blobList) blobList = [];
|
|
388
|
+
blobList.push(url);
|
|
389
|
+
blobs[vmID] = blobList;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
340
393
|
class FFIComm {
|
|
341
394
|
constructor(vmID, hub, channel) {
|
|
342
395
|
this.vmID = vmID;
|
package/groovebox_build.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var GROOVEBOX_BUILD = "
|
|
1
|
+
var GROOVEBOX_BUILD = "3492";
|
|
2
2
|
export { GROOVEBOX_BUILD }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remix_labs/machine-starter",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3138.0-dev",
|
|
4
4
|
"description": "start the groove",
|
|
5
5
|
"main": "node.js",
|
|
6
6
|
"browser": "index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"author": "Remixlabs staff",
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@remix_labs/hub-client": "2.
|
|
14
|
+
"@remix_labs/hub-client": "2.3138.0-dev",
|
|
15
15
|
"nanoid": "^5.0.2",
|
|
16
16
|
"web-worker": "^1.2.0"
|
|
17
17
|
},
|