30 lines
614 B
TypeScript
30 lines
614 B
TypeScript
import { openPromise } from "./util/openPromise.js";
|
|
|
|
export class AsyncCondition {
|
|
_waitPromise: Promise<void>;
|
|
_resolveWaitPromise: () => void;
|
|
constructor() {
|
|
const op = openPromise<void>();
|
|
this._waitPromise = op.promise;
|
|
this._resolveWaitPromise = op.resolve;
|
|
}
|
|
|
|
wait(): Promise<void> {
|
|
return this._waitPromise;
|
|
}
|
|
|
|
trigger(): void {
|
|
this._resolveWaitPromise();
|
|
const op = openPromise<void>();
|
|
this._waitPromise = op.promise;
|
|
this._resolveWaitPromise = op.resolve;
|
|
}
|
|
}
|
|
|
|
export enum TransactionLevel {
|
|
None = 0,
|
|
Read = 1,
|
|
Write = 2,
|
|
VersionChange = 3,
|
|
}
|