UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

116 lines 3.66 kB
/** * Менеджер блокировок для системы транзакций * Обеспечивает изоляцию и предотвращение конфликтов */ import { EventEmitter } from 'eventemitter3'; import { LockManager } from '../types/transaction-interfaces'; /** * Информация о блокировке */ interface LockInfo { elementId: string; transactionId: string; lockType: 'read' | 'write'; timestamp: number; expiresAt?: number; } /** * Реализация менеджера блокировок */ export declare class LockManagerImpl extends EventEmitter implements LockManager { private locks; private waitingQueue; private defaultTimeout; private deadlockCheckInterval; private deadlockCheckTimer?; constructor(); /** * Получение блокировки на элемент */ acquireLock(elementId: string, transactionId: string, lockType: 'read' | 'write'): Promise<boolean>; /** * Освобождение блокировки */ releaseLock(elementId: string, transactionId: string): Promise<boolean>; /** * Освобождение всех блокировок транзакции */ releaseAllLocks(transactionId: string): Promise<number>; /** * Проверка блокировки элемента */ isLocked(elementId: string): boolean; /** * Получение информации о блокировке */ getLockInfo(elementId: string): { locked: boolean; transactionId?: string; lockType?: 'read' | 'write'; timestamp?: number; }; /** * Обнаружение взаимоблокировок */ detectDeadlocks(): string[][]; /** * Принудительное снятие блокировок */ forceReleaseLocks(elementIds: string[]): Promise<number>; /** * Создание новой блокировки */ private createLock; /** * Создание разделяемой блокировки (для read-операций) */ private createSharedLock; /** * Ожидание освобождения блокировки */ private waitForLock; /** * Обработка очереди ожидания после освобождения блокировки */ private processWaitingQueue; /** * Проверка совместимости блокировок */ private areLocksCompatible; /** * Построение графа зависимостей для обнаружения взаимоблокировок */ private buildDependencyGraph; /** * Поиск цикла в графе зависимостей */ private findCycle; /** * Запуск периодической проверки взаимоблокировок */ private startDeadlockDetection; /** * Остановка проверки взаимоблокировок */ private stopDeadlockDetection; /** * Очистка ресурсов */ destroy(): void; /** * Получение статистики блокировок */ getStats(): { totalLocks: number; readLocks: number; writeLocks: number; waitingRequests: number; oldestLock?: LockInfo; }; /** * Генерация события транзакционной системы */ private emitEvent; } export {}; //# sourceMappingURL=LockManagerImpl.d.ts.map