Makes it so we don't have to wait for all servers to be connected before fetching

This commit is contained in:
2020-04-30 23:36:37 -07:00
parent 1bad5ae5b0
commit 1cfdf3552f
4 changed files with 42 additions and 49 deletions

View File

@@ -54,15 +54,9 @@ class ServerMultiplex
public func refreshDevices()
{
ensureConnection { (error: Error?) in
if let error = error {
self.handleError(error)
} else {
self.servers.forEach { (server: Server) in
server.fetchDevices { (result: Result<[AnyDevice], Error>) in
self.handleServerFetchResult(result)
}
}
self.servers.forEach { (server: Server) in
server.fetchDevices { (result: Result<[AnyDevice], Error>) in
self.handleServerFetchResult(result)
}
}
}
@@ -70,25 +64,6 @@ class ServerMultiplex
extension ServerMultiplex
{
private func ensureConnection(then: @escaping (Error?) -> Void)
{
let disconnectedServers = servers.filter { $0.connected == false }
var disconnectedServerCount = disconnectedServers.count
if disconnectedServerCount > 0 {
disconnectedServers.forEach { (server: Server) in
server.connect { (error: Error?) in
disconnectedServerCount -= 1
if disconnectedServerCount == 0 {
then(error)
}
}
}
} else {
then(nil)
}
}
private func handleServerFetchResult(_ result: Result<[AnyDevice], Error>)
{
switch result {