UNPKG

fleeta-api-lib

Version:

A comprehensive library for fleet management applications - API, Auth, Device management

228 lines 6.86 kB
/** * GPS Data Manager * Global singleton for managing multiple GPS Data Providers with centralized control * Now uses direct callbacks instead of subscriptions */ import { GpsDataProvider } from './GpsDataProvider'; import type { GpsDataProviderConfig, GpsManagerDataCallback, GpsManagerStatsCallback, GpsManagerProviderCallback } from './types'; import type { DeviceGpsInfo } from '../gps-websocket/types'; /** * GPS Data Manager configuration interface */ export interface GpsDataManagerConfig { maxProviders: number; maxHistorySize: number; cleanupInterval: number; enablePerformanceMonitoring: boolean; statsUpdateInterval: number; } /** * Global GPS statistics interface */ export interface GlobalGpsStats { totalProviders: number; totalDevices: number; totalUpdatesPerMinute: number; memoryUsage: { providers: number; cachedData: number; callbacks: number; }; performance: { averageProcessingTime: number; peakProcessingTime: number; totalProcessedUpdates: number; }; } /** * GPS Data Manager Class * Singleton pattern for managing multiple GPS data providers globally * Uses direct callbacks instead of subscription pattern */ export declare class GpsDataManager { private static instance; private config; private isInitialized; private providers; private providerConfigs; private dataCallbacks; private statsCallbacks; private providerAddedCallbacks; private providerRemovedCallbacks; private globalStats; private statsTimer; private cleanupTimer; private aggregatedData; /** * Private constructor for singleton pattern * @param config - Manager configuration */ private constructor(); /** * Get singleton instance * @param config - Optional configuration for first initialization * @returns GPS Data Manager instance */ static getInstance(config?: Partial<GpsDataManagerConfig>): GpsDataManager; /** * Reset singleton instance (for testing) */ static resetInstance(): void; /** * Initialize the manager */ initialize(): void; /** * Create a new GPS data provider * @param id - Unique provider ID * @param config - Provider configuration * @returns Created GPS data provider */ createProvider(id: string, config: Partial<GpsDataProviderConfig>): GpsDataProvider; /** * Get existing GPS data provider * @param id - Provider ID * @returns GPS data provider or null if not found */ getProvider(id: string): GpsDataProvider | null; /** * Get all provider IDs * @returns Array of provider IDs */ getProviderIds(): string[]; /** * Remove GPS data provider * @param id - Provider ID to remove * @returns True if provider was removed */ removeProvider(id: string): boolean; /** * Register callback for global GPS data updates * @param callback - Function to call when global data updates */ registerDataCallback(callback: GpsManagerDataCallback): void; /** * Unregister global data callback * @param callback - Callback to remove */ unregisterDataCallback(callback: GpsManagerDataCallback): void; /** * Register callback for global statistics updates * @param callback - Function to call when stats update */ registerStatsCallback(callback: GpsManagerStatsCallback): void; /** * Unregister global stats callback * @param callback - Callback to remove */ unregisterStatsCallback(callback: GpsManagerStatsCallback): void; /** * Register callback for provider added events * @param callback - Function to call when provider is added */ registerProviderAddedCallback(callback: GpsManagerProviderCallback): void; /** * Unregister provider added callback * @param callback - Callback to remove */ unregisterProviderAddedCallback(callback: GpsManagerProviderCallback): void; /** * Register callback for provider removed events * @param callback - Function to call when provider is removed */ registerProviderRemovedCallback(callback: GpsManagerProviderCallback): void; /** * Unregister provider removed callback * @param callback - Callback to remove */ unregisterProviderRemovedCallback(callback: GpsManagerProviderCallback): void; /** * Clear all callbacks */ clearAllCallbacks(): void; /** * Get global statistics * @returns Global GPS statistics */ getGlobalStats(): GlobalGpsStats; /** * Get aggregated data from all providers * @returns Map of provider ID to device data */ getAggregatedData(): Map<string, DeviceGpsInfo[]>; /** * Get combined data from all providers * @returns Combined device data from all providers */ getCombinedData(): DeviceGpsInfo[]; /** * Update manager configuration * @param newConfig - New configuration */ updateConfig(newConfig: Partial<GpsDataManagerConfig>): void; /** * Destroy manager and all providers */ destroy(): void; /** * Setup callback handlers for a provider * @param providerId - Provider ID * @param provider - Provider instance */ private setupProviderCallbacks; /** * Update global statistics */ private updateGlobalStats; /** * Notify data callbacks of global data updates */ private notifyDataCallbacks; /** * Notify stats callbacks of statistics updates */ private notifyStatsCallbacks; /** * Notify provider added callbacks * @param providerId - Provider ID * @param provider - Provider instance */ private notifyProviderAdded; /** * Notify provider removed callbacks * @param providerId - Provider ID */ private notifyProviderRemoved; /** * Start performance monitoring */ private startPerformanceMonitoring; /** * Stop performance monitoring */ private stopPerformanceMonitoring; /** * Start cleanup routine */ private startCleanupRoutine; /** * Stop cleanup routine */ private stopCleanupRoutine; /** * Perform cleanup operations */ private performCleanup; } /** * Create or get GPS Data Manager instance * @param config - Optional configuration * @returns GPS Data Manager instance */ export declare function createGpsDataManager(config?: Partial<GpsDataManagerConfig>): GpsDataManager; /** * Get existing GPS Data Manager instance * @returns GPS Data Manager instance or null if not created */ export declare function getGpsDataManager(): GpsDataManager | null; //# sourceMappingURL=GpsDataManager.d.ts.map