openskynet / apps /shared /OpenClawKit /Tests /OpenClawKitTests /TestAsyncHelpers.swift
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import Foundation
struct AsyncWaitTimeoutError: Error, CustomStringConvertible {
let label: String
var description: String { "Timeout waiting for: \(self.label)" }
}
func waitUntil(
_ label: String,
timeoutSeconds: Double = 3.0,
pollMs: UInt64 = 10,
_ condition: @escaping @Sendable () async -> Bool) async throws
{
let deadline = Date().addingTimeInterval(timeoutSeconds)
while Date() < deadline {
if await condition() {
return
}
try await Task.sleep(nanoseconds: pollMs * 1_000_000)
}
throw AsyncWaitTimeoutError(label: label)
}