@adpt/core
Version:
AdaptJS core library
32 lines • 1.21 kB
TypeScript
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