Further tweak threading

pull/214/head
nielsandriesse 5 years ago
parent 5c968d1c04
commit 256cd631db

@ -44,7 +44,7 @@ public final class LokiAPI : NSObject {
let request = TSRequest(url: url, method: "POST", parameters: [ "method" : method.rawValue, "params" : parameters ])
if let headers = headers { request.allHTTPHeaderFields = headers }
request.timeoutInterval = timeout ?? defaultTimeout
return TSNetworkManager.shared().perform(request, withCompletionQueue: DispatchQueue.global(qos: .userInitiated))
return TSNetworkManager.shared().perform(request, withCompletionQueue: DispatchQueue.global(qos: .default))
.map2 { $0.responseObject }
.handlingSnodeErrorsIfNeeded(for: target, associatedWith: hexEncodedPublicKey)
.recoveringNetworkErrorsIfNeeded()

@ -65,7 +65,7 @@ public class LokiDotNetAPI : NSObject {
let queryParameters = "pubKey=\(getUserHexEncodedPublicKey())"
let url = URL(string: "\(server)/loki/v1/get_challenge?\(queryParameters)")!
let request = TSRequest(url: url)
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .userInitiated)).map2 { rawResponse in
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .default)).map2 { rawResponse in
guard let json = rawResponse as? JSON, let base64EncodedChallenge = json["cipherText64"] as? String, let base64EncodedServerPublicKey = json["serverPubKey64"] as? String,
let challenge = Data(base64Encoded: base64EncodedChallenge), var serverPublicKey = Data(base64Encoded: base64EncodedServerPublicKey) else {
throw LokiDotNetAPIError.parsingFailed
@ -89,7 +89,7 @@ public class LokiDotNetAPI : NSObject {
let url = URL(string: "\(server)/loki/v1/submit_challenge")!
let parameters = [ "pubKey" : getUserHexEncodedPublicKey(), "token" : token ]
let request = TSRequest(url: url, method: "POST", parameters: parameters)
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .userInitiated)).map2 { _ in token }
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .default)).map2 { _ in token }
}
// MARK: Public API
@ -191,7 +191,7 @@ public class LokiDotNetAPI : NSObject {
proceed(with: "loki") // Uploads to the Loki File Server shouldn't include any personally identifiable information so use a dummy auth token
}
} else {
getAuthToken(for: server).done2 { token in
getAuthToken(for: server).done(on: DispatchQueue.global(qos: .userInitiated)) { token in
proceed(with: token)
}.catch2 { error in
print("[Loki] Couldn't upload attachment due to error: \(error).")

@ -38,7 +38,7 @@ public final class LokiFileServerAPI : LokiDotNetAPI {
let queryParameters = "ids=\(hexEncodedPublicKeys.map { "@\($0)" }.joined(separator: ","))&include_user_annotations=1"
let url = URL(string: "\(server)/users?\(queryParameters)")!
let request = TSRequest(url: url)
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .userInitiated)).map2 { rawResponse -> Set<DeviceLink> in
return LokiFileServerProxy(for: server).perform(request, withCompletionQueue: DispatchQueue.global(qos: .default)).map2 { rawResponse -> Set<DeviceLink> in
guard let json = rawResponse as? JSON, let data = json["data"] as? [JSON] else {
print("[Loki] Couldn't parse device links for users: \(hexEncodedPublicKeys) from: \(rawResponse).")
throw LokiDotNetAPIError.parsingFailed

@ -10,7 +10,7 @@ public class LokiHTTPClient {
securityPolicy.validatesDomainName = false
result.securityPolicy = securityPolicy
result.responseSerializer = AFHTTPResponseSerializer()
result.completionQueue = DispatchQueue.global(qos: .userInitiated)
result.completionQueue = DispatchQueue.global(qos: .default)
return result
}()

@ -203,7 +203,7 @@ public final class LokiPublicChatPoller : NSObject {
proceed()
}
} else {
DispatchQueue.global(qos: .userInitiated).async {
DispatchQueue.global(qos: .default).async {
proceed()
}
}

@ -1,7 +1,7 @@
import PromiseKit
/// Retry the promise constructed in `body` up to `maxRetryCount` times.
internal func attempt<T>(maxRetryCount: UInt, recoveringOn queue: DispatchQueue = .global(qos: .userInitiated), body: @escaping () -> Promise<T>) -> Promise<T> {
internal func attempt<T>(maxRetryCount: UInt, recoveringOn queue: DispatchQueue = .global(qos: .default), body: @escaping () -> Promise<T>) -> Promise<T> {
var retryCount = 0
func attempt() -> Promise<T> {
return body().recover(on: queue) { error -> Promise<T> in

@ -3,74 +3,74 @@ import PromiseKit
public extension Thenable {
func then2<U>(_ body: @escaping (T) throws -> U) -> Promise<U.T> where U : Thenable {
return then(on: DispatchQueue.global(qos: .userInitiated), body)
return then(on: DispatchQueue.global(qos: .default), body)
}
func map2<U>(_ transform: @escaping (T) throws -> U) -> Promise<U> {
return map(on: DispatchQueue.global(qos: .userInitiated), transform)
return map(on: DispatchQueue.global(qos: .default), transform)
}
func done2(_ body: @escaping (T) throws -> Void) -> Promise<Void> {
return done(on: DispatchQueue.global(qos: .userInitiated), body)
return done(on: DispatchQueue.global(qos: .default), body)
}
func get2(_ body: @escaping (T) throws -> Void) -> Promise<T> {
return get(on: DispatchQueue.global(qos: .userInitiated), body)
return get(on: DispatchQueue.global(qos: .default), body)
}
}
public extension Thenable where T: Sequence {
func mapValues2<U>(_ transform: @escaping (T.Iterator.Element) throws -> U) -> Promise<[U]> {
return mapValues(on: DispatchQueue.global(qos: .userInitiated), transform)
return mapValues(on: DispatchQueue.global(qos: .default), transform)
}
}
public extension Guarantee {
func then2<U>(_ body: @escaping (T) -> Guarantee<U>) -> Guarantee<U> {
return then(on: DispatchQueue.global(qos: .userInitiated), body)
return then(on: DispatchQueue.global(qos: .default), body)
}
func map2<U>(_ body: @escaping (T) -> U) -> Guarantee<U> {
return map(on: DispatchQueue.global(qos: .userInitiated), body)
return map(on: DispatchQueue.global(qos: .default), body)
}
func done2(_ body: @escaping (T) -> Void) -> Guarantee<Void> {
return done(on: DispatchQueue.global(qos: .userInitiated), body)
return done(on: DispatchQueue.global(qos: .default), body)
}
func get2(_ body: @escaping (T) -> Void) -> Guarantee<T> {
return get(on: DispatchQueue.global(qos: .userInitiated), body)
return get(on: DispatchQueue.global(qos: .default), body)
}
}
public extension CatchMixin {
func catch2(_ body: @escaping (Error) -> Void) -> PMKFinalizer {
return self.catch(on: DispatchQueue.global(qos: .userInitiated), body)
return self.catch(on: DispatchQueue.global(qos: .default), body)
}
func recover2<U: Thenable>(_ body: @escaping(Error) throws -> U) -> Promise<T> where U.T == T {
return recover(on: DispatchQueue.global(qos: .userInitiated), body)
return recover(on: DispatchQueue.global(qos: .default), body)
}
func recover2(_ body: @escaping(Error) -> Guarantee<T>) -> Guarantee<T> {
return recover(on: DispatchQueue.global(qos: .userInitiated), body)
return recover(on: DispatchQueue.global(qos: .default), body)
}
func ensure2(_ body: @escaping () -> Void) -> Promise<T> {
return ensure(on: DispatchQueue.global(qos: .userInitiated), body)
return ensure(on: DispatchQueue.global(qos: .default), body)
}
}
public extension CatchMixin where T == Void {
func recover2(_ body: @escaping(Error) -> Void) -> Guarantee<Void> {
return recover(on: DispatchQueue.global(qos: .userInitiated), body)
return recover(on: DispatchQueue.global(qos: .default), body)
}
func recover2(_ body: @escaping(Error) throws -> Void) -> Promise<Void> {
return recover(on: DispatchQueue.global(qos: .userInitiated), body)
return recover(on: DispatchQueue.global(qos: .default), body)
}
}

Loading…
Cancel
Save