mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-15 05:41:51 +00:00
37 lines
707 B
TypeScript
37 lines
707 B
TypeScript
import { RegExpRunner } from "./RegExpRunner";
|
|
|
|
interface RunnerInfo {
|
|
users: number;
|
|
runner: RegExpRunner;
|
|
}
|
|
|
|
const runners: Map<string, RunnerInfo> = new Map();
|
|
|
|
export function getRegExpRunner(key: string) {
|
|
if (!runners.has(key)) {
|
|
const runner = new RegExpRunner();
|
|
runners.set(key, {
|
|
users: 0,
|
|
runner,
|
|
});
|
|
}
|
|
|
|
const info = runners.get(key)!;
|
|
info.users++;
|
|
|
|
return info.runner;
|
|
}
|
|
|
|
export function discardRegExpRunner(key: string) {
|
|
if (!runners.has(key)) {
|
|
throw new Error(`No runners with key ${key}, cannot discard`);
|
|
}
|
|
|
|
const info = runners.get(key)!;
|
|
info.users--;
|
|
|
|
if (info.users <= 0) {
|
|
info.runner.dispose();
|
|
runners.delete(key);
|
|
}
|
|
}
|