mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-24 18:33:03 -07:00
[PictureLoader] Make dispatch and rate-limit bookkeeping key on the real host
Addresses ZeldaZach's round-4 review nits: - Dispatch now resolves the cached-redirect chain before the in-flight gate, so a redirect learned after a URL was queued can no longer bypass the MAX_IN_FLIGHT_PER_HOST cap and drain the whole queue onto the redirect target, which may carry its own developer cap. processSingleRequest does the same so the allowance math keys on the host that is actually hit. - The per-host in-flight slot is released when the reply is destroyed (with the worker as the connection context) rather than on a 'finished' connection bound to the work object, so an aborted reply or a work object deleted while a reply is pending can never permanently shrink the fast path's concurrency. - storeSettings only prunes limits for hosts with neither a URL nor a developer cap, so throttles on redirect targets (api.scryfall.com -> cards.scryfall.io) survive URL removal. - Unlocked hosts are offered 0..UNLOCKED_HOST_LIMIT_MAX (50) in the rate limit dialog, matching clampHostRequestLimit() and the documented hand-editable range, so values written into downloads.ini are no longer silently rewritten on the next edit.
This commit is contained in:
parent
8a16b43a90
commit
3bd118fae9
4 changed files with 75 additions and 13 deletions
|
|
@ -25,6 +25,15 @@ public:
|
|||
static constexpr int DEFAULT_HOST_REQUEST_LIMIT = 10;
|
||||
/** @brief Floor for any per-host request allowance. */
|
||||
static constexpr int MIN_HOST_REQUEST_LIMIT = 1;
|
||||
/**
|
||||
* @brief Upper bound offered to the user when lowering an unlocked host's allowance.
|
||||
*
|
||||
* Unlocked hosts have no developer cap, so `clampHostRequestLimit` puts no upper bound on
|
||||
* them; this only bounds what the settings dialog offers, and matches the widest paced
|
||||
* allowance a user is documented to be able to hand-edit in `downloads.ini`. Choosing 0
|
||||
* below this restores the "unlimited" fast path.
|
||||
*/
|
||||
static constexpr int UNLOCKED_HOST_LIMIT_MAX = 50;
|
||||
/** @brief Developer cap marking a host as never throttled per host or by the dispatch pacing. */
|
||||
static constexpr int UNLIMITED_HOST_QUOTA = -1;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue