mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 21:30:45 +08:00
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
34 lines
945 B
Swift
34 lines
945 B
Swift
import OpenClawKit
|
|
|
|
enum GatewayPushSubscription {
|
|
@MainActor
|
|
static func consume(
|
|
bufferingNewest: Int? = nil,
|
|
onPush: @escaping @MainActor (GatewayPush) -> Void) async
|
|
{
|
|
let stream: AsyncStream<GatewayPush> = if let bufferingNewest {
|
|
await GatewayConnection.shared.subscribe(bufferingNewest: bufferingNewest)
|
|
} else {
|
|
await GatewayConnection.shared.subscribe()
|
|
}
|
|
|
|
for await push in stream {
|
|
if Task.isCancelled { return }
|
|
await MainActor.run {
|
|
onPush(push)
|
|
}
|
|
}
|
|
}
|
|
|
|
@MainActor
|
|
static func restartTask(
|
|
task: inout Task<Void, Never>?,
|
|
bufferingNewest: Int? = nil,
|
|
onPush: @escaping @MainActor (GatewayPush) -> Void)
|
|
{
|
|
task?.cancel()
|
|
task = Task {
|
|
await self.consume(bufferingNewest: bufferingNewest, onPush: onPush)
|
|
}
|
|
}
|
|
}
|