fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
228 lines • 6.86 kB
TypeScript
/**
* 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