mirror of
https://github.com/koush/scrypted.git
synced 2026-09-17 09:10:38 +01:00
core: watch for script worker exits
This commit is contained in:
4
plugins/core/package-lock.json
generated
4
plugins/core/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@scrypted/common": "file:../../common",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/core",
|
||||
"version": "0.2.1",
|
||||
"version": "0.2.2",
|
||||
"description": "Scrypted Core plugin. Provides the UI, websocket, and engine.io APIs.",
|
||||
"author": "Scrypted",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -78,13 +78,15 @@ export class ScriptCore extends ScryptedDeviceBase implements DeviceProvider, De
|
||||
const e = this.scripts.get(nativeId);
|
||||
if (e)
|
||||
return e;
|
||||
|
||||
let script = new Script(nativeId);
|
||||
let worker: Worker;
|
||||
|
||||
if (script.providedInterfaces.length > 2) {
|
||||
const fork = sdk.fork<{
|
||||
newScript: typeof newScript,
|
||||
}>();
|
||||
worker = fork.worker
|
||||
worker = fork.worker;
|
||||
try {
|
||||
script = await (await fork.result).newScript(nativeId);
|
||||
await script.run();
|
||||
@@ -94,6 +96,12 @@ export class ScriptCore extends ScryptedDeviceBase implements DeviceProvider, De
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
worker?.on('exit', () => {
|
||||
if (this.scripts.get(nativeId)?.worker === worker)
|
||||
this.scripts.delete(nativeId);
|
||||
});
|
||||
|
||||
this.scripts.set(nativeId, {
|
||||
script,
|
||||
worker,
|
||||
|
||||
Reference in New Issue
Block a user