Increase load performance by dynamically loading engines.

This commit is contained in:
Dermot Duffy
2023-03-28 20:23:20 -07:00
parent 2b61b8c9e1
commit 04e99b912e
2 changed files with 7 additions and 5 deletions
+6 -4
View File
@@ -9,9 +9,6 @@ import { ResolvedMediaCache } from '../utils/ha/resolved-media';
import { MemoryRequestCache, RecordingSegmentsCache, RequestCache } from './cache';
import { CameraManagerEngine } from './engine';
import { CameraInitializationError } from './error';
import { FrigateCameraManagerEngine } from './frigate/engine-frigate';
import { GenericCameraManagerEngine } from './generic/engine-generic';
import { MotionEyeCameraManagerEngine } from './motioneye/engine-motioneye';
import { Engine } from './types';
export class CameraManagerEngineFactory {
@@ -29,13 +26,15 @@ export class CameraManagerEngineFactory {
this._resolvedMediaCache = resolvedMediaCache;
}
public createEngine(engine: Engine): CameraManagerEngine | null {
public async createEngine(engine: Engine): Promise<CameraManagerEngine | null> {
let cameraManagerEngine: CameraManagerEngine | null = null;
switch (engine) {
case Engine.Generic:
const { GenericCameraManagerEngine } = await import('./generic/engine-generic');
cameraManagerEngine = new GenericCameraManagerEngine();
break;
case Engine.Frigate:
const { FrigateCameraManagerEngine } = await import('./frigate/engine-frigate');
cameraManagerEngine = new FrigateCameraManagerEngine(
this._cardWideConfig,
new RecordingSegmentsCache(),
@@ -43,6 +42,9 @@ export class CameraManagerEngineFactory {
);
break;
case Engine.MotionEye:
const { MotionEyeCameraManagerEngine } = await import(
'./motioneye/engine-motioneye'
);
cameraManagerEngine = new MotionEyeCameraManagerEngine(
new BrowseMediaManager(new MemoryRequestCache<string, BrowseMedia>()),
this._resolvedMediaCache,
+1 -1
View File
@@ -142,7 +142,7 @@ export class CameraManager {
for (const [index, cameraConfig] of camerasConfig.entries()) {
const engineType = engineTypes[index];
const engine = engineType
? engines.get(engineType) ?? this._engineFactory.createEngine(engineType)
? engines.get(engineType) ?? await this._engineFactory.createEngine(engineType)
: null;
if (!engine || !engineType) {
throw new CameraInitializationError(