This commit is contained in:
Михаил Капелько
2023-12-16 10:16:48 +03:00
parent 8cd6dac189
commit cd4c6fd80b
5 changed files with 64 additions and 20 deletions

View File

@@ -42,7 +42,33 @@ public extension Bus {
.sink { v in handler(v.0, v.1) }
.store(in: &subscriptions)
}
static func receiveAsync<T>(
_ subscriptions: inout Set<AnyCancellable>,
_ keys: Set<String>,
_ handler: @escaping ((String, T) -> Void)
) {
Service.singleton?.broadcaster
.compactMap { v -> (String, T)? in
guard
keys.contains(v.key),
let value = v.value as? T
else {
return nil
}
return (v.key, value)
}
.receive(on: DispatchQueue.main)
.sink { v in handler(v.0, v.1) }
.store(in: &subscriptions)
}
static func send(_ key: String, _ value: Any) {
Service.singleton?.send(key, value)
}
/*
static func sendAsync<T: Equatable>(
_ subscriptions: inout Set<AnyCancellable>,
_ key: String,
@@ -53,4 +79,5 @@ public extension Bus {
.sink { v in Service.singleton?.send(key, v) }
.store(in: &subscriptions)
}
*/
}