31 lines
810 B
TypeScript
31 lines
810 B
TypeScript
|
|
|
|
let shuttingDown = false;
|
|
let activeTransactions = 0;
|
|
|
|
export const isShuttingDown = () => shuttingDown;
|
|
export const setShuttingDown = (value: boolean) => {
|
|
shuttingDown = value;
|
|
};
|
|
|
|
export const incrementTransactions = () => {
|
|
activeTransactions++;
|
|
};
|
|
|
|
export const decrementTransactions = () => {
|
|
activeTransactions--;
|
|
};
|
|
|
|
export const getActiveTransactions = () => activeTransactions;
|
|
|
|
export const waitForTransactions = async (timeoutMs: number = 10000) => {
|
|
const start = Date.now();
|
|
while (activeTransactions > 0) {
|
|
if (Date.now() - start > timeoutMs) {
|
|
console.warn(`Shutdown timed out waiting for ${activeTransactions} transactions after ${timeoutMs}ms`);
|
|
break;
|
|
}
|
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
}
|
|
};
|