// retoor import Foundation import Logging actor MetricsStore { private var samples: [MetricSample] = [] private var lastFlush = Date() private let flushInterval: TimeInterval = 60.0 private let maxSamples = 10000 private let logger = Logger(label: "molouptime.metrics") struct BatchedSamples: Codable { let checkUid: String let samples: [MetricSample] } func record(_ sample: MetricSample) { samples.append(sample) if samples.count >= maxSamples || Date().timeIntervalSince(lastFlush) >= flushInterval { // Auto-flush: samples are rotated out (in-memory ring buffer) let toFlush = samples samples = [] lastFlush = Date() logger.info("Flushed \(toFlush.count) metric samples to buffer") } } func collect() -> [MetricSample] { let collected = samples samples = [] lastFlush = Date() return collected } func snapshot() -> [MetricSample] { return samples } func count() -> Int { return samples.count } }