mirror of https://github.com/openclaw/openclaw.git
refactor: share agent wait dedupe cleanup
This commit is contained in:
parent
b5010719d6
commit
c8898034f9
|
|
@ -23,6 +23,17 @@ function asFiniteNumber(value: unknown): number | undefined {
|
|||
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
||||
}
|
||||
|
||||
function removeWaiter(runId: string, waiter: () => void): void {
|
||||
const waiters = AGENT_WAITERS_BY_RUN_ID.get(runId);
|
||||
if (!waiters) {
|
||||
return;
|
||||
}
|
||||
waiters.delete(waiter);
|
||||
if (waiters.size === 0) {
|
||||
AGENT_WAITERS_BY_RUN_ID.delete(runId);
|
||||
}
|
||||
}
|
||||
|
||||
function addWaiter(runId: string, waiter: () => void): () => void {
|
||||
const normalizedRunId = runId.trim();
|
||||
if (!normalizedRunId) {
|
||||
|
|
@ -31,28 +42,10 @@ function addWaiter(runId: string, waiter: () => void): () => void {
|
|||
const existing = AGENT_WAITERS_BY_RUN_ID.get(normalizedRunId);
|
||||
if (existing) {
|
||||
existing.add(waiter);
|
||||
return () => {
|
||||
const waiters = AGENT_WAITERS_BY_RUN_ID.get(normalizedRunId);
|
||||
if (!waiters) {
|
||||
return;
|
||||
}
|
||||
waiters.delete(waiter);
|
||||
if (waiters.size === 0) {
|
||||
AGENT_WAITERS_BY_RUN_ID.delete(normalizedRunId);
|
||||
}
|
||||
};
|
||||
return () => removeWaiter(normalizedRunId, waiter);
|
||||
}
|
||||
AGENT_WAITERS_BY_RUN_ID.set(normalizedRunId, new Set([waiter]));
|
||||
return () => {
|
||||
const waiters = AGENT_WAITERS_BY_RUN_ID.get(normalizedRunId);
|
||||
if (!waiters) {
|
||||
return;
|
||||
}
|
||||
waiters.delete(waiter);
|
||||
if (waiters.size === 0) {
|
||||
AGENT_WAITERS_BY_RUN_ID.delete(normalizedRunId);
|
||||
}
|
||||
};
|
||||
return () => removeWaiter(normalizedRunId, waiter);
|
||||
}
|
||||
|
||||
function notifyWaiters(runId: string): void {
|
||||
|
|
|
|||
Loading…
Reference in New Issue