UNPKG

@adpt/core

Version:
32 lines 1.21 kB
import AsyncLock from "async-lock"; import { OptionsWithLock, ServerLock } from "./server"; export interface Locker<LockType> { lock(): Promise<LockType>; unlock(lock: LockType): Promise<void>; } export interface NoLock extends ServerLock { } export declare class NoLocker implements Locker<NoLock> { lock(): Promise<NoLock>; unlock(l: NoLock): Promise<void>; } export interface ProcessLock extends ServerLock { release: () => Promise<void>; } export declare class ProcessLocker implements Locker<ProcessLock> { protected locks: AsyncLock; lock(): Promise<ProcessLock>; unlock(lock: ProcessLock): Promise<void>; } export declare abstract class ServerBase<L extends ServerLock = ServerLock> { protected processLocker: ProcessLocker; protected worldLocker: Locker<L>; protected currentProcessLock?: ProcessLock; protected currentWorldLock?: L; constructor(worldLocker?: Locker<L>); lock(): Promise<ServerLock>; unlock(l: ServerLock): Promise<void>; protected withLock<T>(options: OptionsWithLock, f: () => Promise<T>): Promise<T>; protected assertLock(l: ServerLock, op: string): l is ProcessLock; } //# sourceMappingURL=server_base.d.ts.map