Procházet zdrojové kódy

feat: enforce recorder/decode budgets

master
Jan Svabenik před 7 hodinami
rodič
revize
e0070ac7d5
2 změnil soubory, kde provedl 32 přidání a 0 odebrání
  1. +29
    -0
      cmd/sdrd/decision_budget.go
  2. +3
    -0
      cmd/sdrd/pipeline_runtime.go

+ 29
- 0
cmd/sdrd/decision_budget.go Zobrazit soubor

@@ -0,0 +1,29 @@
package main

import "sdr-wideband-suite/internal/pipeline"

func enforceDecisionBudgets(decisions []pipeline.SignalDecision, maxRecord int, maxDecode int) (int, int) {
recorded := 0
decoded := 0
for i := range decisions {
if decisions[i].ShouldRecord {
if maxRecord > 0 && recorded >= maxRecord {
decisions[i].ShouldRecord = false
decisions[i].Reason = "recording budget exceeded"
} else {
recorded++
}
}
if decisions[i].ShouldAutoDecode {
if maxDecode > 0 && decoded >= maxDecode {
decisions[i].ShouldAutoDecode = false
if decisions[i].Reason == "" {
decisions[i].Reason = "decode budget exceeded"
}
} else {
decoded++
}
}
}
return recorded, decoded
}

+ 3
- 0
cmd/sdrd/pipeline_runtime.go Zobrazit soubor

@@ -360,6 +360,9 @@ func (rt *dspRuntime) refineSignals(art *spectrumArtifacts, input pipeline.Refin
}
}
}
maxRecord := rt.cfg.Resources.MaxRecordingStreams
maxDecode := rt.cfg.Resources.MaxRecordingStreams
enforceDecisionBudgets(decisions, maxRecord, maxDecode)
rt.det.UpdateClasses(signals)
return pipeline.RefinementResult{Signals: signals, Decisions: decisions, Candidates: selectedCandidates}
}


Načítá se…
Zrušit
Uložit