ai-chatbot/lib/canvas/image-queue-fairness.ts

23 lines
744 B
TypeScript

export function getAdaptiveImageQueueOwnerLimit(params: {
maxConcurrent: number;
hasCompetingOwner: boolean;
}) {
const maxConcurrent = Math.max(1, Math.floor(params.maxConcurrent || 1));
if (!params.hasCompetingOwner) {
return maxConcurrent;
}
return Math.max(1, Math.ceil(maxConcurrent / 2));
}
export function estimateImageDispatchWaitMs(params: {
queuePosition: number;
dispatchIntervalMs: number;
delayRemainingMs?: number;
}) {
const queuePosition = Math.max(0, Math.floor(params.queuePosition || 0));
const dispatchIntervalMs = Math.max(0, params.dispatchIntervalMs || 0);
const delayRemainingMs = Math.max(0, params.delayRemainingMs || 0);
return delayRemainingMs + queuePosition * dispatchIntervalMs;
}