refactor mpv reconnect scheduling into transport layer

This commit is contained in:
2026-02-14 15:13:07 -08:00
parent 1b141bb835
commit 7501340c40
3 changed files with 89 additions and 13 deletions

View File

@@ -26,3 +26,29 @@ export function getMpvReconnectDelay(
}
return 2000;
}
export interface MpvReconnectSchedulerDeps {
attempt: number;
hasConnectedOnce: boolean;
getReconnectTimer: () => ReturnType<typeof setTimeout> | null;
setReconnectTimer: (timer: ReturnType<typeof setTimeout> | null) => void;
onReconnectAttempt: (attempt: number, delay: number) => void;
connect: () => void;
}
export function scheduleMpvReconnect(
deps: MpvReconnectSchedulerDeps,
): number {
const reconnectTimer = deps.getReconnectTimer();
if (reconnectTimer) {
clearTimeout(reconnectTimer);
}
const delay = getMpvReconnectDelay(deps.attempt, deps.hasConnectedOnce);
deps.setReconnectTimer(
setTimeout(() => {
deps.onReconnectAttempt(deps.attempt + 1, delay);
deps.connect();
}, delay),
);
return deps.attempt + 1;
}