cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
116 lines • 3.66 kB
TypeScript
/**
* Менеджер блокировок для системы транзакций
* Обеспечивает изоляцию и предотвращение конфликтов
*/
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