Increase load performance by dynamically loading engines.
This commit is contained in:
@@ -9,9 +9,6 @@ import { ResolvedMediaCache } from '../utils/ha/resolved-media';
|
|||||||
import { MemoryRequestCache, RecordingSegmentsCache, RequestCache } from './cache';
|
import { MemoryRequestCache, RecordingSegmentsCache, RequestCache } from './cache';
|
||||||
import { CameraManagerEngine } from './engine';
|
import { CameraManagerEngine } from './engine';
|
||||||
import { CameraInitializationError } from './error';
|
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';
|
import { Engine } from './types';
|
||||||
|
|
||||||
export class CameraManagerEngineFactory {
|
export class CameraManagerEngineFactory {
|
||||||
@@ -29,13 +26,15 @@ export class CameraManagerEngineFactory {
|
|||||||
this._resolvedMediaCache = resolvedMediaCache;
|
this._resolvedMediaCache = resolvedMediaCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
public createEngine(engine: Engine): CameraManagerEngine | null {
|
public async createEngine(engine: Engine): Promise<CameraManagerEngine | null> {
|
||||||
let cameraManagerEngine: CameraManagerEngine | null = null;
|
let cameraManagerEngine: CameraManagerEngine | null = null;
|
||||||
switch (engine) {
|
switch (engine) {
|
||||||
case Engine.Generic:
|
case Engine.Generic:
|
||||||
|
const { GenericCameraManagerEngine } = await import('./generic/engine-generic');
|
||||||
cameraManagerEngine = new GenericCameraManagerEngine();
|
cameraManagerEngine = new GenericCameraManagerEngine();
|
||||||
break;
|
break;
|
||||||
case Engine.Frigate:
|
case Engine.Frigate:
|
||||||
|
const { FrigateCameraManagerEngine } = await import('./frigate/engine-frigate');
|
||||||
cameraManagerEngine = new FrigateCameraManagerEngine(
|
cameraManagerEngine = new FrigateCameraManagerEngine(
|
||||||
this._cardWideConfig,
|
this._cardWideConfig,
|
||||||
new RecordingSegmentsCache(),
|
new RecordingSegmentsCache(),
|
||||||
@@ -43,6 +42,9 @@ export class CameraManagerEngineFactory {
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case Engine.MotionEye:
|
case Engine.MotionEye:
|
||||||
|
const { MotionEyeCameraManagerEngine } = await import(
|
||||||
|
'./motioneye/engine-motioneye'
|
||||||
|
);
|
||||||
cameraManagerEngine = new MotionEyeCameraManagerEngine(
|
cameraManagerEngine = new MotionEyeCameraManagerEngine(
|
||||||
new BrowseMediaManager(new MemoryRequestCache<string, BrowseMedia>()),
|
new BrowseMediaManager(new MemoryRequestCache<string, BrowseMedia>()),
|
||||||
this._resolvedMediaCache,
|
this._resolvedMediaCache,
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ export class CameraManager {
|
|||||||
for (const [index, cameraConfig] of camerasConfig.entries()) {
|
for (const [index, cameraConfig] of camerasConfig.entries()) {
|
||||||
const engineType = engineTypes[index];
|
const engineType = engineTypes[index];
|
||||||
const engine = engineType
|
const engine = engineType
|
||||||
? engines.get(engineType) ?? this._engineFactory.createEngine(engineType)
|
? engines.get(engineType) ?? await this._engineFactory.createEngine(engineType)
|
||||||
: null;
|
: null;
|
||||||
if (!engine || !engineType) {
|
if (!engine || !engineType) {
|
||||||
throw new CameraInitializationError(
|
throw new CameraInitializationError(
|
||||||
|
|||||||
Reference in New Issue
Block a user