Spaces:
Sleeping
Sleeping
| package settings | |
| import "ds2api/internal/config" | |
| func validateMergedRuntimeSettings(current config.RuntimeConfig, incoming *config.RuntimeConfig) error { | |
| merged := current | |
| if incoming != nil { | |
| if incoming.AccountMaxInflight > 0 { | |
| merged.AccountMaxInflight = incoming.AccountMaxInflight | |
| } | |
| if incoming.AccountMaxQueue > 0 { | |
| merged.AccountMaxQueue = incoming.AccountMaxQueue | |
| } | |
| if incoming.GlobalMaxInflight > 0 { | |
| merged.GlobalMaxInflight = incoming.GlobalMaxInflight | |
| } | |
| if incoming.TokenRefreshIntervalHours > 0 { | |
| merged.TokenRefreshIntervalHours = incoming.TokenRefreshIntervalHours | |
| } | |
| } | |
| return validateRuntimeSettings(merged) | |
| } | |
| func (h *Handler) applyRuntimeSettings() { | |
| if h == nil || h.Store == nil || h.Pool == nil { | |
| return | |
| } | |
| accountCount := len(h.Store.Accounts()) | |
| maxPer := h.Store.RuntimeAccountMaxInflight() | |
| recommended := defaultRuntimeRecommended(accountCount, maxPer) | |
| maxQueue := h.Store.RuntimeAccountMaxQueue(recommended) | |
| global := h.Store.RuntimeGlobalMaxInflight(recommended) | |
| h.Pool.ApplyRuntimeLimits(maxPer, maxQueue, global) | |
| } | |
| func defaultRuntimeRecommended(accountCount, maxPer int) int { | |
| if maxPer <= 0 { | |
| maxPer = 1 | |
| } | |
| if accountCount <= 0 { | |
| return maxPer | |
| } | |
| return accountCount * maxPer | |
| } | |