@camera.ui/server 0.0.14 → 0.0.16
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/interface/{@tanstack.Cvca3GsJ.0.0.14.js → @tanstack.BjdVg-TE.0.0.16.js} +1 -1
- package/dist/interface/{@vee-validate.Dhm2s2jJ.0.0.14.js → @vee-validate.BY4_2lEs.0.0.16.js} +1 -1
- package/dist/interface/{@vueform.wl5SN6Kr.0.0.14.js → @vueform.DFvJBWIi.0.0.16.js} +1 -1
- package/dist/interface/{@vueuse.GozpFDMZ.0.0.14.js → @vueuse.CGN12qog.0.0.16.js} +1 -1
- package/dist/interface/{Account.CHpD0y6M.0.0.14.js → Account.CfJ0_AE8.0.0.16.js} +1 -1
- package/dist/interface/{Adminpanel.CelMh8wU.0.0.14.js → Adminpanel.FTycvGGP.0.0.16.js} +2 -2
- package/dist/interface/{Appearance.B0X5775O.0.0.14.js → Appearance.DZdFEn29.0.0.16.js} +1 -1
- package/dist/interface/{Backup.CciVdmKI.0.0.14.js → Backup.C63DnD6l.0.0.16.js} +1 -1
- package/dist/interface/{Camera.Bc0p6JVD.0.0.14.js → Camera.ClZr_XH5.0.0.16.js} +1 -1
- package/dist/interface/{Cameras.CDqjsGuM.0.0.14.js → Cameras.Du8aeeME.0.0.16.js} +1 -1
- package/dist/interface/{Camview.BCifNo-Z.0.0.14.js → Camview.Bo4mLtoT.0.0.16.js} +1 -1
- package/dist/interface/{Config.DaY-PxVq.0.0.14.js → Config.XeCgFEoY.0.0.16.js} +1 -1
- package/dist/interface/{Console.D6g6zVMZ.0.0.14.js → Console.8oN5H7vV.0.0.16.js} +1 -1
- package/dist/interface/{FirstSteps.BlXdIB1-.0.0.14.js → FirstSteps.mXqKiWM8.0.0.16.js} +1 -1
- package/dist/interface/{NewCamera.C6ceI-8A.0.0.14.js → NewCamera.0K90OojR.0.0.16.js} +1 -1
- package/dist/interface/{Plugin.B8sGxdo1.0.0.14.js → Plugin.BR9zmMja.0.0.16.js} +1 -1
- package/dist/interface/{Plugins.BTbLmvva.0.0.14.js → Plugins.49uEjmzr.0.0.16.js} +1 -1
- package/dist/interface/Recordings.Bi4EWX-j.0.0.16.js +1 -0
- package/dist/interface/Recordings.Ce60GFcU.0.0.16.js +1 -0
- package/dist/interface/{Settings.DcwLAKtn.0.0.14.js → Settings.LCEZwyhh.0.0.16.js} +1 -1
- package/dist/interface/{System.Dc0iwshQ.0.0.14.js → System.BLePSJ80.0.0.16.js} +1 -1
- package/dist/interface/{User.g2U_tFY3.0.0.14.js → User.C2qVrMxN.0.0.16.js} +1 -1
- package/dist/interface/{VConfigEditor.vue_vue_type_script_setup_true_lang.EikqU5ed.0.0.14.js → VConfigEditor.vue_vue_type_script_setup_true_lang.J5gKGR9C.0.0.16.js} +2 -2
- package/dist/interface/{VConsole.CQqki9g1.0.0.14.js → VConsole.BStq4qh-.0.0.16.js} +1 -1
- package/dist/interface/{VPlayer.BdDvEUtF.0.0.14.js → VPlayer.B3YorBp_.0.0.16.js} +1 -1
- package/dist/interface/{VPluginCard.UxjDX7aw.0.0.14.js → VPluginCard.DR63SC8V.0.0.16.js} +1 -1
- package/dist/interface/{ace-builds.CFQYSvlz.0.0.14.js → ace-builds.BhnhUUTY.0.0.16.js} +1 -1
- package/dist/interface/{dnd-core.yQYwh7nE.0.0.14.js → dnd-core.B69q2Tfk.0.0.16.js} +1 -1
- package/dist/interface/{draggabilly.DVAyE9_D.0.0.14.js → draggabilly.DKBJ_DRn.0.0.16.js} +1 -1
- package/dist/interface/{engine.io-client.Co7SlJ1E.0.0.14.js → engine.io-client.D47Vn3PY.0.0.16.js} +1 -1
- package/dist/interface/{ev-emitter.Bw9npPB3.0.0.14.js → ev-emitter.CO554XzW.0.0.16.js} +1 -1
- package/dist/interface/{fast-deep-equal.BHyMOnnP.0.0.14.js → fast-deep-equal.CjfEj15C.0.0.16.js} +1 -1
- package/dist/interface/{highlight.js.Bcczinar.0.0.14.js → highlight.js.CsG_3GKA.0.0.16.js} +1 -1
- package/dist/interface/index.html +33 -33
- package/dist/interface/{linkify-it.BUeGIfuB.0.0.14.js → linkify-it.D-Re04U7.0.0.16.js} +1 -1
- package/dist/interface/{main.BKyGw-1O.0.0.14.js → main.CySWzYoy.0.0.16.js} +3 -3
- package/dist/interface/{markdown-it.DOljZfaF.0.0.14.js → markdown-it.BSj0kuDJ.0.0.16.js} +1 -1
- package/dist/interface/{nprogress.y4ho8UN3.0.0.14.js → nprogress.CN7SpneM.0.0.16.js} +1 -1
- package/dist/interface/{pinia.81SobSxK.0.0.14.js → pinia.DHXyXuKc.0.0.16.js} +1 -1
- package/dist/interface/{plugins.XWRvgFHD.0.0.14.js → plugins.FSy44vXn.0.0.16.js} +1 -1
- package/dist/interface/{qrcode.CZ-rkxD4.0.0.14.js → qrcode.DjqZuH8F.0.0.16.js} +1 -1
- package/dist/interface/{react-dnd-touch-backend.Due7_SmB.0.0.14.js → react-dnd-touch-backend.Cecw_0Kl.0.0.16.js} +1 -1
- package/dist/interface/{rxjs.Cn6mAcb0.0.0.14.js → rxjs.tqVqva9T.0.0.16.js} +1 -1
- package/dist/interface/{socket.io-client.wHwPn3iN.0.0.14.js → socket.io-client.BFAMFJUC.0.0.16.js} +1 -1
- package/dist/interface/{socket.io-parser.CPmU8U6u.0.0.14.js → socket.io-parser.B5BeMqb6.0.0.16.js} +1 -1
- package/dist/interface/sw.js +1 -1
- package/dist/interface/{system.CTvBwGOj.0.0.14.js → system.DlYVX2qG.0.0.16.js} +1 -1
- package/dist/interface/{ui.ltvMH1es.0.0.14.js → ui.CcXHo2vy.0.0.16.js} +1 -1
- package/dist/interface/{unidragger.CrbQd6Tw.0.0.14.js → unidragger.B3Aj7lJB.0.0.16.js} +1 -1
- package/dist/interface/{v-calendar.nDfqON1B.0.0.14.js → v-calendar.y5PNpUm6.0.0.16.js} +1 -1
- package/dist/interface/{vee-validate.DQ8f4ION.0.0.14.js → vee-validate.VFk2ifr-.0.0.16.js} +1 -1
- package/dist/interface/{vue-i18n.B4qiXH_H.0.0.14.js → vue-i18n.BRzZ63Xi.0.0.16.js} +1 -1
- package/dist/interface/{vue-inline-svg.DV5nngF9.0.0.14.js → vue-inline-svg.De0HvU9m.0.0.16.js} +1 -1
- package/dist/interface/{vue-router.BcAjblcv.0.0.14.js → vue-router.Cr6qPC8Y.0.0.16.js} +1 -1
- package/dist/interface/{vue3-apexcharts.DVRtMG4m.0.0.14.js → vue3-apexcharts.BMb8nnby.0.0.16.js} +1 -1
- package/dist/interface/{vue3-dnd.CMRbSVyw.0.0.14.js → vue3-dnd.SEoyozNj.0.0.16.js} +1 -1
- package/dist/interface/{vue3-toastify.CfJCs4au.0.0.14.js → vue3-toastify.DUisHb3e.0.0.16.js} +1 -1
- package/dist/interface/{vuetify.C9swI1mp.0.0.14.js → vuetify.DByERR9S.0.0.16.js} +1 -1
- package/dist/server/package.json +2 -1
- package/dist/server/src/api/controllers/plugins.controller.js +2 -2
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/controllers/system.controller.js +1 -6
- package/dist/server/src/api/controllers/system.controller.js.map +1 -1
- package/dist/server/src/api/database/index.d.ts +0 -2
- package/dist/server/src/api/database/index.js +1 -11
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/schemas/users.schema.js +2 -2
- package/dist/server/src/api/schemas/users.schema.js.map +1 -1
- package/dist/server/src/camera/streaming/werift-session.d.ts +1 -1
- package/dist/server/src/camera/streaming/werift-session.js.map +1 -1
- package/dist/server/src/plugins/index.js +0 -2
- package/dist/server/src/plugins/index.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/cameraStorage.d.ts +3 -2
- package/dist/server/src/polyglot/node/plugins/cameraStorage.js +8 -12
- package/dist/server/src/polyglot/node/plugins/cameraStorage.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/child.d.ts +1 -0
- package/dist/server/src/polyglot/node/plugins/child.js +16 -3
- package/dist/server/src/polyglot/node/plugins/child.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/pluginApi.d.ts +3 -2
- package/dist/server/src/polyglot/node/plugins/pluginApi.js +3 -3
- package/dist/server/src/polyglot/node/plugins/pluginApi.js.map +1 -1
- package/dist/server/src/polyglot/node/plugins/storageController.d.ts +3 -1
- package/dist/server/src/polyglot/node/plugins/storageController.js +4 -2
- package/dist/server/src/polyglot/node/plugins/storageController.js.map +1 -1
- package/dist/server/src/polyglot/python/decoder/child.py +5 -4
- package/dist/server/src/polyglot/python/plugins/camera_storage.py +9 -39
- package/dist/server/src/polyglot/python/plugins/child.py +30 -6
- package/dist/server/src/polyglot/python/plugins/plugin_api.py +5 -1
- package/dist/server/src/polyglot/python/plugins/proxy/core_manager.py +8 -8
- package/dist/server/src/polyglot/python/plugins/storage_controller.py +5 -3
- package/dist/server/src/polyglot/python/utilities/json_lmdb.py +19 -0
- package/dist/server/src/polyglot/python/utilities/object_path.py +1 -1
- package/dist/server/src/polyglot/python/utilities/utils.py +12 -0
- package/dist/server/src/services/config/index.d.ts +2 -1
- package/dist/server/src/services/config/index.js +46 -1
- package/dist/server/src/services/config/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/interface/Recordings.CujQWqIE.0.0.14.js +0 -1
- package/dist/interface/Recordings.DocHADaV.0.0.14.js +0 -1
- /package/dist/interface/{@babel.l0sNRNKZ.0.0.14.js → @babel.l0sNRNKZ.0.0.16.js} +0 -0
- /package/dist/interface/{@intlify.YW_pt133.0.0.14.js → @intlify.YW_pt133.0.0.16.js} +0 -0
- /package/dist/interface/{@mdi.jq8isxax.0.0.14.js → @mdi.jq8isxax.0.0.16.js} +0 -0
- /package/dist/interface/{@popperjs.BQBsAJpH.0.0.14.js → @popperjs.BQBsAJpH.0.0.16.js} +0 -0
- /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.14.js → @react-dnd.CcwRs9xb.0.0.16.js} +0 -0
- /package/dist/interface/{@socket.io.Dkula2eQ.0.0.14.js → @socket.io.Dkula2eQ.0.0.16.js} +0 -0
- /package/dist/interface/{@vue.CIFymae3.0.0.14.js → @vue.CIFymae3.0.0.16.js} +0 -0
- /package/dist/interface/{@xterm.DJzQYeiB.0.0.14.js → @xterm.UN9r0Y94.0.0.16.js} +0 -0
- /package/dist/interface/assets/{@vueform.0.0.14.h7tNX9p6.css → @vueform.0.0.16.h7tNX9p6.css} +0 -0
- /package/dist/interface/assets/{@xterm.0.0.14.CGrrDQr5.css → @xterm.0.0.16.CGrrDQr5.css} +0 -0
- /package/dist/interface/assets/{Account.0.0.14.2KfYXKTQ.css → Account.0.0.16.2KfYXKTQ.css} +0 -0
- /package/dist/interface/assets/{Adminpanel.0.0.14.A2JXV1Ib.css → Adminpanel.0.0.16.A2JXV1Ib.css} +0 -0
- /package/dist/interface/assets/{Backup.0.0.14.BIwaSlv3.css → Backup.0.0.16.BIwaSlv3.css} +0 -0
- /package/dist/interface/assets/{Camera.0.0.14.BDtUJ-lA.css → Camera.0.0.16.BDtUJ-lA.css} +0 -0
- /package/dist/interface/assets/{Cameras.0.0.14.D7bnvH42.css → Cameras.0.0.16.D7bnvH42.css} +0 -0
- /package/dist/interface/assets/{Camview.0.0.14.cgjDTjXy.css → Camview.0.0.16.cgjDTjXy.css} +0 -0
- /package/dist/interface/assets/{Config.0.0.14.BQJF6s_V.css → Config.0.0.16.BQJF6s_V.css} +0 -0
- /package/dist/interface/assets/{Console.0.0.14.DWrfRWs9.css → Console.0.0.16.DWrfRWs9.css} +0 -0
- /package/dist/interface/assets/{FirstSteps.0.0.14.DFSydMqk.css → FirstSteps.0.0.16.DFSydMqk.css} +0 -0
- /package/dist/interface/assets/{NewCamera.0.0.14.CMzSwwHn.css → NewCamera.0.0.16.CMzSwwHn.css} +0 -0
- /package/dist/interface/assets/{Plugin.0.0.14.BGZE7hpr.css → Plugin.0.0.16.BGZE7hpr.css} +0 -0
- /package/dist/interface/assets/{Plugins.0.0.14.Cwu0aGUO.css → Plugins.0.0.16.Cwu0aGUO.css} +0 -0
- /package/dist/interface/assets/{Settings.0.0.14.DTxcLhIY.css → Settings.0.0.16.DTxcLhIY.css} +0 -0
- /package/dist/interface/assets/{User.0.0.14.CXUSYt8i.css → User.0.0.16.CXUSYt8i.css} +0 -0
- /package/dist/interface/assets/{VConsole.0.0.14.BZT1WyS-.css → VConsole.0.0.16.BZT1WyS-.css} +0 -0
- /package/dist/interface/assets/{VPlayer.0.0.14.CzZme_fu.css → VPlayer.0.0.16.CzZme_fu.css} +0 -0
- /package/dist/interface/assets/{VPluginCard.0.0.14.C2OqX7DJ.css → VPluginCard.0.0.16.C2OqX7DJ.css} +0 -0
- /package/dist/interface/assets/{highlight.0.0.14.DgoK_Xib.css → highlight.0.0.16.DgoK_Xib.css} +0 -0
- /package/dist/interface/assets/{logo-256.0.0.14.BCQk9H1-.png → logo-256.0.0.16.BCQk9H1-.png} +0 -0
- /package/dist/interface/assets/{logo-512.0.0.14.DLKVOU2S.png → logo-512.0.0.16.DLKVOU2S.png} +0 -0
- /package/dist/interface/assets/{logo.0.0.14.DmEiRk0z.png → logo.0.0.16.DmEiRk0z.png} +0 -0
- /package/dist/interface/assets/{main.0.0.14.DYbE3rQA.css → main.0.0.16.DYbE3rQA.css} +0 -0
- /package/dist/interface/assets/{mode-json.0.0.14.Br7xisR1.js → mode-json.0.0.16.Br7xisR1.js} +0 -0
- /package/dist/interface/assets/{mode-yaml.0.0.14.CIYL8U3d.js → mode-yaml.0.0.16.CIYL8U3d.js} +0 -0
- /package/dist/interface/assets/{v-calendar.0.0.14.CtSuDYZU.css → v-calendar.0.0.16.CtSuDYZU.css} +0 -0
- /package/dist/interface/assets/{vue3-toastify.0.0.14.DTY1DMRs.css → vue3-toastify.0.0.16.DTY1DMRs.css} +0 -0
- /package/dist/interface/assets/{vuetify.0.0.14.DPyVfAPv.css → vuetify.0.0.16.DPyVfAPv.css} +0 -0
- /package/dist/interface/{axios.BI2i94Vb.0.0.14.js → axios.BI2i94Vb.0.0.16.js} +0 -0
- /package/dist/interface/{compare-versions.DqEOhma6.0.0.14.js → compare-versions.DqEOhma6.0.0.16.js} +0 -0
- /package/dist/interface/{dijkstrajs.D_NXgYpA.0.0.14.js → dijkstrajs.D_NXgYpA.0.0.16.js} +0 -0
- /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.14.js → engine.io-parser.BiEtp6m2.0.0.16.js} +0 -0
- /package/dist/interface/{entities.C20TfXL6.0.0.14.js → entities.C20TfXL6.0.0.16.js} +0 -0
- /package/dist/interface/{get-size.D1dS-IaP.0.0.14.js → get-size.D1dS-IaP.0.0.16.js} +0 -0
- /package/dist/interface/{mdurl.k9Sl0PQj.0.0.14.js → mdurl.k9Sl0PQj.0.0.16.js} +0 -0
- /package/dist/interface/{punycode.js.Dj65hjkv.0.0.14.js → punycode.js.Dj65hjkv.0.0.16.js} +0 -0
- /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.14.js → react-dnd-html5-backend.1HQjlkwI.0.0.16.js} +0 -0
- /package/dist/interface/{redux.CuxFRhX_.0.0.14.js → redux.CuxFRhX_.0.0.16.js} +0 -0
- /package/dist/interface/{tslib.9k7AwCpt.0.0.14.js → tslib.9k7AwCpt.0.0.16.js} +0 -0
- /package/dist/interface/{uc.micro.kMc2yuuw.0.0.14.js → uc.micro.kMc2yuuw.0.0.16.js} +0 -0
- /package/dist/interface/{utils.BvINh1mj.0.0.14.js → utils.BvINh1mj.0.0.16.js} +0 -0
- /package/dist/interface/{uuid.DvF23Exx.0.0.14.js → uuid.DvF23Exx.0.0.16.js} +0 -0
- /package/dist/interface/{vue.l0sNRNKZ.0.0.14.js → vue.l0sNRNKZ.0.0.16.js} +0 -0
- /package/dist/interface/{zod.BaF2dDCd.0.0.14.js → zod.BaF2dDCd.0.0.16.js} +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { open } from 'lmdb';
|
|
2
1
|
import objectPath from 'object-path';
|
|
3
2
|
import { API_EVENT } from '../../../api.js';
|
|
4
3
|
import { isEqual, mergeWith, structuredClone } from '../../../utils/utils.js';
|
|
@@ -7,17 +6,15 @@ export class CameraStorage {
|
|
|
7
6
|
cameraId;
|
|
8
7
|
instance;
|
|
9
8
|
api;
|
|
10
|
-
|
|
9
|
+
pluginDb;
|
|
11
10
|
schema;
|
|
12
11
|
values = {};
|
|
13
|
-
constructor(api, instance, cameraId, schema = {}) {
|
|
12
|
+
constructor(api, pluginDb, instance, cameraId, schema = {}) {
|
|
14
13
|
this.api = api;
|
|
14
|
+
this.pluginDb = pluginDb;
|
|
15
15
|
this.instance = instance;
|
|
16
16
|
this.cameraId = cameraId;
|
|
17
17
|
this.schema = schema;
|
|
18
|
-
this.db = open(`${this.api.storagePath}/volume`, {
|
|
19
|
-
name: `${cameraId}-config`,
|
|
20
|
-
});
|
|
21
18
|
this.api.deviceManager.once('cameraDeselected', (cameraId) => {
|
|
22
19
|
if (cameraId === this.cameraId) {
|
|
23
20
|
this.removeDb();
|
|
@@ -30,7 +27,7 @@ export class CameraStorage {
|
|
|
30
27
|
* This will load the configuration from the database.
|
|
31
28
|
*/
|
|
32
29
|
initializeStorage() {
|
|
33
|
-
const config = this.
|
|
30
|
+
const config = this.pluginDb.get('config') || {};
|
|
34
31
|
const cameraConfig = config[this.cameraId] || {};
|
|
35
32
|
const schemaConfig = generateJsonFromRootSchema({ schema: this.schema });
|
|
36
33
|
this.values = mergeWith(schemaConfig, cameraConfig, (objValue, srcValue) => {
|
|
@@ -283,20 +280,19 @@ export class CameraStorage {
|
|
|
283
280
|
return false;
|
|
284
281
|
}
|
|
285
282
|
saveDb() {
|
|
286
|
-
const config = this.
|
|
283
|
+
const config = this.pluginDb.get('config') || {};
|
|
287
284
|
const storableConfig = this.filterStorableValues(this.schema);
|
|
288
285
|
config[this.cameraId] = storableConfig;
|
|
289
|
-
this.
|
|
286
|
+
this.pluginDb.putSync('config', config);
|
|
290
287
|
}
|
|
291
288
|
removeDb() {
|
|
292
|
-
const config = this.
|
|
289
|
+
const config = this.pluginDb.get('config') || {};
|
|
293
290
|
delete config[this.cameraId];
|
|
294
|
-
this.
|
|
291
|
+
this.pluginDb.putSync('config', config);
|
|
295
292
|
}
|
|
296
293
|
async close() {
|
|
297
294
|
try {
|
|
298
295
|
this.saveDb();
|
|
299
|
-
await this.db.close();
|
|
300
296
|
}
|
|
301
297
|
catch {
|
|
302
298
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cameraStorage.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/cameraStorage.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cameraStorage.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/cameraStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
// process.title = `camera.ui - ${process.argv[2]}`;
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { open } from 'lmdb';
|
|
3
4
|
import { API_EVENT } from '../../../api.js';
|
|
5
|
+
import { Database } from '../../../api/database/index.js';
|
|
4
6
|
import { ProxyConnection } from '../../../nats/connection.js';
|
|
5
7
|
import { MessageQueue } from '../../../nats/messageQueue.js';
|
|
6
8
|
import { PLUGIN_COMMAND, PLUGIN_STATUS } from '../../../plugins/types.js';
|
|
7
9
|
import { unpack } from '../../../utils/packer.js';
|
|
10
|
+
import { sleep } from '../../../utils/utils.js';
|
|
8
11
|
import { API } from './pluginApi.js';
|
|
9
12
|
import { PluginLogger } from './pluginLogger.js';
|
|
10
13
|
import { CameraDeviceProxy } from './proxy/cameraDevice.js';
|
|
@@ -13,6 +16,7 @@ export class PluginChild {
|
|
|
13
16
|
api;
|
|
14
17
|
plugin;
|
|
15
18
|
logger;
|
|
19
|
+
pluginDb;
|
|
16
20
|
publisher;
|
|
17
21
|
subscriber;
|
|
18
22
|
pluginSubscriber;
|
|
@@ -52,14 +56,21 @@ export class PluginChild {
|
|
|
52
56
|
const configFile = data.storage.configFile;
|
|
53
57
|
const pluginInfo = data.plugin;
|
|
54
58
|
const cameras = data.cameras;
|
|
55
|
-
this.
|
|
59
|
+
this.pluginDb = open(`${storagePath}/volume`, {
|
|
60
|
+
name: Database.USERS_ID,
|
|
61
|
+
});
|
|
62
|
+
const pluginConfig = this.pluginDb.get('config');
|
|
63
|
+
if (!pluginConfig) {
|
|
64
|
+
await this.pluginDb.put('config', {});
|
|
65
|
+
}
|
|
66
|
+
this.api = new API(pluginInfo, storagePath, configFile, this.logger, this.proxyEndpoints, this.auth, this.pluginDb);
|
|
67
|
+
const pluginConstructor = await this.loadPlugin();
|
|
68
|
+
this.plugin = new pluginConstructor(this.logger, this.api);
|
|
56
69
|
const coreManager = this.api.coreManager;
|
|
57
70
|
const deviceManager = this.api.deviceManager;
|
|
58
71
|
await Promise.all([deviceManager.init(), coreManager.init()]);
|
|
59
72
|
const camerasDevices = cameras.map((camera) => new CameraDeviceProxy(this.api, this.logger, camera, data.plugin, this.proxyEndpoints, this.auth));
|
|
60
73
|
await Promise.all(camerasDevices.map((cameraDevice) => cameraDevice.init()));
|
|
61
|
-
const pluginConstructor = await this.loadPlugin();
|
|
62
|
-
this.plugin = new pluginConstructor(this.logger, this.api);
|
|
63
74
|
deviceManager.configureCameras(camerasDevices);
|
|
64
75
|
this.plugin.configureCameras(camerasDevices);
|
|
65
76
|
this.sendMessage({ type: PLUGIN_STATUS.STARTED });
|
|
@@ -78,6 +89,8 @@ export class PluginChild {
|
|
|
78
89
|
this.messageQueue?.abortQueue();
|
|
79
90
|
await this.publisher?.close();
|
|
80
91
|
this.api?.emit(API_EVENT.SHUTDOWN);
|
|
92
|
+
await sleep(500);
|
|
93
|
+
await this.pluginDb?.close();
|
|
81
94
|
}
|
|
82
95
|
async loadPlugin() {
|
|
83
96
|
const { default: pluginConstructor } = await import(process.env.MODULE_PATH);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/child.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/child.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { PluginConfigService } from './configService.js';
|
|
3
3
|
import { StorageController } from './storageController.js';
|
|
4
|
+
import type { RootDatabase } from 'lmdb';
|
|
4
5
|
import type { AuthConfig } from '../../../decoder/types.js';
|
|
5
6
|
import type { PluginInfo } from '../../../plugins/types.js';
|
|
6
7
|
import type { PluginLogger } from './pluginLogger.js';
|
|
7
|
-
import {
|
|
8
|
+
import type { CoreManager } from './proxy/coreManager.js';
|
|
8
9
|
import type { DeviceManager } from './proxy/deviceManager.js';
|
|
9
10
|
export declare interface PluginAPI {
|
|
10
11
|
on(event: 'finishLaunching', listener: () => void): this;
|
|
@@ -30,5 +31,5 @@ export declare class API extends EventEmitter implements PluginAPI {
|
|
|
30
31
|
readonly configService: PluginConfigService;
|
|
31
32
|
readonly storagePath: string;
|
|
32
33
|
readonly configFile: string;
|
|
33
|
-
constructor(plugin: PluginInfo, storagePath: string, configFile: string, logger: PluginLogger, proxyEndpoints: string[], auth: AuthConfig);
|
|
34
|
+
constructor(plugin: PluginInfo, storagePath: string, configFile: string, logger: PluginLogger, proxyEndpoints: string[], auth: AuthConfig, pluginDb: RootDatabase<Record<string, any>, 'config'>);
|
|
34
35
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { PluginConfigService } from './configService.js';
|
|
3
|
+
import { CoreManagerProxy } from './proxy/coreManager.js';
|
|
3
4
|
import { DeviceManagerProxy } from './proxy/deviceManager.js';
|
|
4
5
|
import { StorageController } from './storageController.js';
|
|
5
|
-
import { CoreManagerProxy } from './proxy/coreManager.js';
|
|
6
6
|
export class API extends EventEmitter {
|
|
7
7
|
coreManager;
|
|
8
8
|
deviceManager;
|
|
@@ -10,12 +10,12 @@ export class API extends EventEmitter {
|
|
|
10
10
|
configService;
|
|
11
11
|
storagePath;
|
|
12
12
|
configFile;
|
|
13
|
-
constructor(plugin, storagePath, configFile, logger, proxyEndpoints, auth) {
|
|
13
|
+
constructor(plugin, storagePath, configFile, logger, proxyEndpoints, auth, pluginDb) {
|
|
14
14
|
super();
|
|
15
15
|
this.storagePath = storagePath;
|
|
16
16
|
this.configFile = configFile;
|
|
17
17
|
this.configService = new PluginConfigService(configFile);
|
|
18
|
-
this.storageController = new StorageController(this);
|
|
18
|
+
this.storageController = new StorageController(this, pluginDb);
|
|
19
19
|
this.coreManager = new CoreManagerProxy(this, logger, plugin, proxyEndpoints, auth);
|
|
20
20
|
this.deviceManager = new DeviceManagerProxy(this, logger, plugin, proxyEndpoints, auth);
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginApi.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/pluginApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pluginApi.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/pluginApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAgC3D,MAAM,OAAO,GAAI,SAAQ,YAAY;IAC1B,WAAW,CAAc;IACzB,aAAa,CAAgB;IAC7B,iBAAiB,CAAoB;IACrC,aAAa,CAAsB;IACnC,WAAW,CAAS;IACpB,UAAU,CAAS;IAE5B,YACE,MAAkB,EAClB,WAAmB,EACnB,UAAkB,EAClB,MAAoB,EACpB,cAAwB,EACxB,IAAgB,EAChB,QAAqD;QAErD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;CACF"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CameraStorage } from './cameraStorage.js';
|
|
2
|
+
import type { RootDatabase } from 'lmdb';
|
|
2
3
|
import type { JsonSchemaForm } from '../../../plugins/types.js';
|
|
3
4
|
import type { API } from './pluginApi.js';
|
|
4
5
|
export declare class StorageController {
|
|
5
6
|
private api;
|
|
7
|
+
private pluginDb;
|
|
6
8
|
private cameraStorages;
|
|
7
|
-
constructor(api: API);
|
|
9
|
+
constructor(api: API, pluginDb: RootDatabase<Record<string, any>, 'config'>);
|
|
8
10
|
/**
|
|
9
11
|
* Create a camera storage instance
|
|
10
12
|
*
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { CameraStorage } from './cameraStorage.js';
|
|
2
2
|
export class StorageController {
|
|
3
3
|
api;
|
|
4
|
+
pluginDb;
|
|
4
5
|
cameraStorages = new Map();
|
|
5
|
-
constructor(api) {
|
|
6
|
+
constructor(api, pluginDb) {
|
|
6
7
|
this.api = api;
|
|
8
|
+
this.pluginDb = pluginDb;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* Create a camera storage instance
|
|
@@ -13,7 +15,7 @@ export class StorageController {
|
|
|
13
15
|
* @param schema - The plugin schema
|
|
14
16
|
*/
|
|
15
17
|
createCameraStorage(instance, cameraId, schema = {}) {
|
|
16
|
-
const cameraStorage = this.cameraStorages.get(cameraId) || new CameraStorage(this.api, instance, cameraId, schema);
|
|
18
|
+
const cameraStorage = this.cameraStorages.get(cameraId) || new CameraStorage(this.api, this.pluginDb, instance, cameraId, schema);
|
|
17
19
|
cameraStorage.initializeStorage();
|
|
18
20
|
this.cameraStorages.set(cameraId, cameraStorage);
|
|
19
21
|
return cameraStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageController.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/storageController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"storageController.js","sourceRoot":"","sources":["../../../../../../src/polyglot/node/plugins/storageController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,MAAM,OAAO,iBAAiB;IACpB,GAAG,CAAM;IACT,QAAQ,CAA8C;IACtD,cAAc,GAAoC,IAAI,GAAG,EAAE,CAAC;IAEpE,YAAY,GAAQ,EAAE,QAAqD;QACzE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,mBAAmB,CAAsD,QAAa,EAAE,QAAgB,EAAE,SAAyB,EAAE;QAC1I,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,aAAa,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrI,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEjD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAsD,QAAgB;QAC3F,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,QAAgB;QACzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -93,7 +93,7 @@ class FrameWorkerChild:
|
|
|
93
93
|
self.closed = False
|
|
94
94
|
self.restarting = False
|
|
95
95
|
self.clients: dict[str, FrameWorkerClient] = {}
|
|
96
|
-
self.tasks: TaskSet = TaskSet(f"{self.
|
|
96
|
+
self.tasks: TaskSet = TaskSet(f"{self.config['cameraName']} FrameWorkerChild")
|
|
97
97
|
|
|
98
98
|
self.prebuffer_full = False
|
|
99
99
|
self.prebuffer_duration = 7
|
|
@@ -118,7 +118,7 @@ class FrameWorkerChild:
|
|
|
118
118
|
|
|
119
119
|
@property
|
|
120
120
|
def log_prefix(self) -> str:
|
|
121
|
-
return f"{self.
|
|
121
|
+
return f"{self.config['cameraName']}:"
|
|
122
122
|
|
|
123
123
|
@property
|
|
124
124
|
async def metadata(self) -> FrameMetadata:
|
|
@@ -699,7 +699,7 @@ class FrameWorkerChild:
|
|
|
699
699
|
message = main_message["message"]
|
|
700
700
|
|
|
701
701
|
if message == "setCameraName":
|
|
702
|
-
self.
|
|
702
|
+
self.config["cameraName"] = main_message["data"]["cameraName"]
|
|
703
703
|
elif message == "recoverClients":
|
|
704
704
|
await self.recover_clients(main_message["data"]["clients"])
|
|
705
705
|
|
|
@@ -870,4 +870,5 @@ class FrameWorkerChild:
|
|
|
870
870
|
|
|
871
871
|
if __name__ == "__main__":
|
|
872
872
|
worker = FrameWorkerChild()
|
|
873
|
-
asyncio.run(worker.listen()
|
|
873
|
+
asyncio.run(worker.listen())
|
|
874
|
+
# asyncio.run(worker.listen(), debug=True)
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import inspect
|
|
2
|
-
import json
|
|
3
2
|
from contextlib import suppress
|
|
4
3
|
from copy import deepcopy
|
|
5
|
-
from pathlib import Path
|
|
6
4
|
from typing import Any, Optional, TypeVar, Union, cast
|
|
7
5
|
|
|
8
6
|
from camera_ui_types import (
|
|
@@ -24,42 +22,16 @@ from schema import (
|
|
|
24
22
|
)
|
|
25
23
|
from typing_extensions import Literal, overload
|
|
26
24
|
from utilities.object_path import ObjectPath
|
|
27
|
-
from utilities.utils import merge_with
|
|
25
|
+
from utilities.utils import merge, merge_with
|
|
28
26
|
|
|
29
27
|
P = TypeVar("P", str, int, float, bool, dict[Any, Any], list[Any], None)
|
|
30
28
|
|
|
31
29
|
|
|
32
|
-
def merge(
|
|
33
|
-
obj_value: Any,
|
|
34
|
-
src_value: Any,
|
|
35
|
-
key: Union[str, int],
|
|
36
|
-
object: Union[dict[str, Any], list[Any]],
|
|
37
|
-
source: Union[dict[str, Any], list[Any]],
|
|
38
|
-
stack: list[Any],
|
|
39
|
-
) -> Any:
|
|
40
|
-
if isinstance(obj_value, list):
|
|
41
|
-
return src_value
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class JsonLmdb(Lmdb[Literal["config"], dict[str, Any]]):
|
|
45
|
-
def _pre_key(self, key: Literal["config"]) -> bytes:
|
|
46
|
-
return key.encode("utf-8")
|
|
47
|
-
|
|
48
|
-
def _post_key(self, key: bytes) -> Literal["config"]:
|
|
49
|
-
_key: Any = key.decode("utf-8")
|
|
50
|
-
return _key
|
|
51
|
-
|
|
52
|
-
def _pre_value(self, value: dict[str, Any]) -> bytes:
|
|
53
|
-
return json.dumps(value).encode("utf-8")
|
|
54
|
-
|
|
55
|
-
def _post_value(self, value: bytes) -> dict[str, Any]:
|
|
56
|
-
return json.loads(value.decode("utf-8"))
|
|
57
|
-
|
|
58
|
-
|
|
59
30
|
class CameraStorage:
|
|
60
31
|
def __init__(
|
|
61
32
|
self,
|
|
62
33
|
api: PluginAPI,
|
|
34
|
+
plugin_db: Lmdb[Literal["config"], dict[str, Any]],
|
|
63
35
|
instance: Any,
|
|
64
36
|
camera_id: str,
|
|
65
37
|
schema: Optional[JsonSchemaForm] = None,
|
|
@@ -67,14 +39,12 @@ class CameraStorage:
|
|
|
67
39
|
if schema is None:
|
|
68
40
|
schema = {}
|
|
69
41
|
self.__api = api
|
|
42
|
+
self.__plugin_db = plugin_db
|
|
70
43
|
self.__instance = instance
|
|
71
44
|
self.__camera_id = camera_id
|
|
72
45
|
self.schema: JsonSchemaForm = schema or {}
|
|
73
46
|
self.values: dict[str, Any] = {}
|
|
74
47
|
|
|
75
|
-
db_path = Path(api.storage_path) / "volume"
|
|
76
|
-
self.__db: Lmdb[Literal["config"], dict[str, Any]] = JsonLmdb.open(file=str(db_path), flag="c")
|
|
77
|
-
|
|
78
48
|
self.__api.device_manager.once("cameraDeselected", self.__deselected)
|
|
79
49
|
self.__api.once("shutdown", self.__close)
|
|
80
50
|
|
|
@@ -87,7 +57,7 @@ class CameraStorage:
|
|
|
87
57
|
camera_config: dict[str, Any] = {}
|
|
88
58
|
|
|
89
59
|
try:
|
|
90
|
-
config: Any = self.
|
|
60
|
+
config: Any = self.__plugin_db.get("config") or {}
|
|
91
61
|
camera_config = config.get(self.__camera_id, {})
|
|
92
62
|
except: # noqa: E722
|
|
93
63
|
pass
|
|
@@ -417,19 +387,19 @@ class CameraStorage:
|
|
|
417
387
|
return False
|
|
418
388
|
|
|
419
389
|
def __save_db(self) -> None:
|
|
420
|
-
config: Any = self.
|
|
390
|
+
config: Any = self.__plugin_db.get("config") or {}
|
|
421
391
|
storable_config = self.__filter_storable_values(self.schema)
|
|
422
392
|
|
|
423
393
|
config[self.__camera_id] = storable_config
|
|
424
394
|
|
|
425
|
-
self.
|
|
395
|
+
self.__plugin_db.update({"config": config})
|
|
426
396
|
|
|
427
397
|
def __remove_db(self) -> None:
|
|
428
|
-
config: Any = self.
|
|
398
|
+
config: Any = self.__plugin_db.get("config") or {}
|
|
429
399
|
|
|
430
400
|
if self.__camera_id in config:
|
|
431
401
|
del config[self.__camera_id]
|
|
432
|
-
self.
|
|
402
|
+
self.__plugin_db.update(config)
|
|
433
403
|
|
|
434
404
|
def __deselected(self, id: str) -> None:
|
|
435
405
|
if id == self.__camera_id:
|
|
@@ -438,4 +408,4 @@ class CameraStorage:
|
|
|
438
408
|
def __close(self) -> None:
|
|
439
409
|
with suppress(Exception):
|
|
440
410
|
self.__save_db()
|
|
441
|
-
self.
|
|
411
|
+
self.__plugin_db.close()
|
|
@@ -7,11 +7,13 @@ import sys
|
|
|
7
7
|
import traceback
|
|
8
8
|
from asyncio import AbstractEventLoop
|
|
9
9
|
from contextlib import suppress
|
|
10
|
+
from pathlib import Path
|
|
10
11
|
from types import ModuleType
|
|
11
|
-
from typing import Any, Optional, cast
|
|
12
|
+
from typing import Any, Literal, Optional, cast
|
|
12
13
|
|
|
13
14
|
from camera_ui_types import BasePlugin, CameraDevice
|
|
14
15
|
from decoder.typings import AuthConfig
|
|
16
|
+
from lmdbm import Lmdb
|
|
15
17
|
from message_queue import MessageQueue
|
|
16
18
|
from nats.aio.msg import Msg
|
|
17
19
|
from plugin_api import PluginAPI
|
|
@@ -27,6 +29,7 @@ from typings import (
|
|
|
27
29
|
ProxyMessageStructure,
|
|
28
30
|
)
|
|
29
31
|
from utilities.connection import ProxyConnection
|
|
32
|
+
from utilities.json_lmdb import JsonLmdb
|
|
30
33
|
from utilities.packer import unpack
|
|
31
34
|
from utilities.subscriptions import ProxySubscription
|
|
32
35
|
from utilities.task import TaskSet
|
|
@@ -88,6 +91,7 @@ class PluginChild:
|
|
|
88
91
|
|
|
89
92
|
self.display_name = sys.argv[1] if len(sys.argv) > 1 else "PluginChild"
|
|
90
93
|
self.logger = PluginLogger(self.display_name, os.environ["LOGGER_DISABLE_TIMESTAMPS"] == "true")
|
|
94
|
+
self.plugin_db: Optional[Lmdb[Literal["config"], dict[str, Any]]] = None
|
|
91
95
|
|
|
92
96
|
self.subject = f"{os.environ['WORKER_ID']}.ipc.subscriber"
|
|
93
97
|
self.plugin_subject = f"{os.environ['PLUGIN_ID']}.child"
|
|
@@ -136,10 +140,28 @@ class PluginChild:
|
|
|
136
140
|
plugin_info = data["plugin"]
|
|
137
141
|
cameras = data["cameras"]
|
|
138
142
|
|
|
143
|
+
db_path = Path(storage_path) / "volume"
|
|
144
|
+
Path(db_path).mkdir(parents=True, exist_ok=True)
|
|
145
|
+
|
|
146
|
+
self.plugin_db = JsonLmdb.open(file=str(db_path), flag="c")
|
|
147
|
+
|
|
148
|
+
config: Any = self.plugin_db.get("config")
|
|
149
|
+
if config is None:
|
|
150
|
+
self.plugin_db.update({"config": {}})
|
|
151
|
+
|
|
139
152
|
self.api = PluginAPI(
|
|
140
|
-
plugin_info,
|
|
153
|
+
plugin_info,
|
|
154
|
+
storage_path,
|
|
155
|
+
config_file,
|
|
156
|
+
self.logger,
|
|
157
|
+
self.proxy_endpoints,
|
|
158
|
+
self.auth,
|
|
159
|
+
self.plugin_db,
|
|
141
160
|
)
|
|
142
161
|
|
|
162
|
+
plugin_constructor = self.load_plugin()
|
|
163
|
+
self.plugin = cast(BasePlugin, plugin_constructor(self.logger, self.api))
|
|
164
|
+
|
|
143
165
|
await asyncio.gather(
|
|
144
166
|
self.api.core_manager.init(),
|
|
145
167
|
self.api.device_manager.init(),
|
|
@@ -159,9 +181,6 @@ class PluginChild:
|
|
|
159
181
|
|
|
160
182
|
await asyncio.gather(*(camera_device.init() for camera_device in cameras_devices))
|
|
161
183
|
|
|
162
|
-
plugin_constructor = self.load_plugin()
|
|
163
|
-
self.plugin = cast(BasePlugin, plugin_constructor(self.logger, self.api))
|
|
164
|
-
|
|
165
184
|
self.api.device_manager.configure_cameras(cameras_devices)
|
|
166
185
|
self.plugin.configure_cameras(cast(list[CameraDevice], cameras_devices))
|
|
167
186
|
|
|
@@ -185,6 +204,10 @@ class PluginChild:
|
|
|
185
204
|
if self.api:
|
|
186
205
|
self.api.emit("shutdown")
|
|
187
206
|
|
|
207
|
+
if self.plugin_db:
|
|
208
|
+
await asyncio.sleep(1)
|
|
209
|
+
self.plugin_db.close()
|
|
210
|
+
|
|
188
211
|
self.shutdown_event.set()
|
|
189
212
|
|
|
190
213
|
def load_plugin(self) -> Any:
|
|
@@ -313,4 +336,5 @@ class PluginChild:
|
|
|
313
336
|
|
|
314
337
|
if __name__ == "__main__":
|
|
315
338
|
plugin_child = PluginChild()
|
|
316
|
-
asyncio.run(plugin_child.run()
|
|
339
|
+
asyncio.run(plugin_child.run())
|
|
340
|
+
# asyncio.run(plugin_child.run(), debug=True)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
|
|
1
3
|
from config_service import PluginConfigService
|
|
2
4
|
from decoder.typings import AuthConfig
|
|
5
|
+
from lmdbm import Lmdb
|
|
3
6
|
from plugin_logger import PluginLogger
|
|
4
7
|
from pyeecui.asyncio import AsyncIOEventEmitter
|
|
5
8
|
from typings import PluginInfo
|
|
@@ -14,6 +17,7 @@ class PluginAPI(AsyncIOEventEmitter):
|
|
|
14
17
|
logger: PluginLogger,
|
|
15
18
|
proxy_endpoints: list[str],
|
|
16
19
|
auth: AuthConfig,
|
|
20
|
+
plugin_db: Lmdb[Literal["config"], dict[str, Any]],
|
|
17
21
|
) -> None:
|
|
18
22
|
super().__init__()
|
|
19
23
|
|
|
@@ -25,6 +29,6 @@ class PluginAPI(AsyncIOEventEmitter):
|
|
|
25
29
|
self.config_file = config_file
|
|
26
30
|
|
|
27
31
|
self.config_service = PluginConfigService(config_file)
|
|
28
|
-
self.storage_controller = StorageController(self)
|
|
32
|
+
self.storage_controller = StorageController(self, plugin_db)
|
|
29
33
|
self.core_manager = CoreManager(self, logger, plugin, proxy_endpoints, auth)
|
|
30
34
|
self.device_manager = DeviceManager(self, logger, plugin, proxy_endpoints, auth)
|
|
@@ -41,10 +41,10 @@ class CoreManager(AsyncIOEventEmitter):
|
|
|
41
41
|
self.cm_subject = "coreManager.subscriber"
|
|
42
42
|
|
|
43
43
|
self.publisher: Optional[ProxyConnection] = None
|
|
44
|
-
self.
|
|
44
|
+
self.cm_publisher: Optional[ProxyConnection] = None
|
|
45
45
|
|
|
46
46
|
self.subscriber: Optional[ProxySubscription] = None
|
|
47
|
-
self.
|
|
47
|
+
self.cm_subscriber: Optional[ProxySubscription] = None
|
|
48
48
|
|
|
49
49
|
self.tasks: TaskSet = TaskSet(f"{self.plugin['name']} CoreManager")
|
|
50
50
|
self.message_queue: Optional[MessageQueue] = None
|
|
@@ -64,8 +64,8 @@ class CoreManager(AsyncIOEventEmitter):
|
|
|
64
64
|
self.publisher = ProxyConnection(self.subject, servers, self.auth)
|
|
65
65
|
await self.publisher.connect()
|
|
66
66
|
|
|
67
|
-
self.
|
|
68
|
-
await self.
|
|
67
|
+
self.cm_publisher = ProxyConnection(self.cm_subject, servers, self.auth)
|
|
68
|
+
await self.cm_publisher.connect()
|
|
69
69
|
|
|
70
70
|
self.subscriber = await self.publisher.subscribe(subject=self.subject)
|
|
71
71
|
self.message_queue = MessageQueue(
|
|
@@ -75,8 +75,8 @@ class CoreManager(AsyncIOEventEmitter):
|
|
|
75
75
|
self.__request_handler,
|
|
76
76
|
)
|
|
77
77
|
|
|
78
|
-
self.
|
|
79
|
-
self.
|
|
78
|
+
self.cm_subscriber = await self.cm_publisher.subscribe(subject=self.cm_subject)
|
|
79
|
+
self.cm_subscriber.on("message", self.__on_proxy_message)
|
|
80
80
|
|
|
81
81
|
async def get_ffmpeg_path(self) -> str:
|
|
82
82
|
return await self.__on_request("getFFmpegPath")
|
|
@@ -141,5 +141,5 @@ class CoreManager(AsyncIOEventEmitter):
|
|
|
141
141
|
if self.publisher:
|
|
142
142
|
await self.publisher.close()
|
|
143
143
|
|
|
144
|
-
if self.
|
|
145
|
-
await self.
|
|
144
|
+
if self.cm_publisher:
|
|
145
|
+
await self.cm_publisher.close()
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
from typing import Any, Optional
|
|
1
|
+
from typing import Any, Literal, Optional
|
|
2
2
|
|
|
3
3
|
from camera_storage import CameraStorage
|
|
4
4
|
from camera_ui_types import JsonSchemaForm
|
|
5
|
+
from lmdbm import Lmdb
|
|
5
6
|
from plugin_api import PluginAPI
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class StorageController:
|
|
9
|
-
def __init__(self, api: PluginAPI) -> None:
|
|
10
|
+
def __init__(self, api: PluginAPI, plugin_db: Lmdb[Literal["config"], dict[str, Any]]) -> None:
|
|
10
11
|
self.__api = api
|
|
11
12
|
self.__camera_storages: dict[str, CameraStorage] = {}
|
|
13
|
+
self.__plugin_db = plugin_db
|
|
12
14
|
|
|
13
15
|
def create_camera_storage(
|
|
14
16
|
self,
|
|
@@ -28,7 +30,7 @@ class StorageController:
|
|
|
28
30
|
schema = {}
|
|
29
31
|
|
|
30
32
|
camera_storage = self.__camera_storages.get(camera_id) or CameraStorage(
|
|
31
|
-
self.__api, instance, camera_id, schema
|
|
33
|
+
self.__api, self.__plugin_db, instance, camera_id, schema
|
|
32
34
|
)
|
|
33
35
|
|
|
34
36
|
camera_storage.initializeStorage()
|