diff options
author | 2018-10-16 16:06:54 -0700 | |
---|---|---|
committer | 2018-10-16 16:06:54 -0700 | |
commit | 9f47e76fc8b72c432e9b3d4711c7b2898236f37b (patch) | |
tree | cdb34118242388985b05e6d321b73e12a30da4a9 /src/objective-c | |
parent | bf092064962664a1a949750c9f9b273f7d27c529 (diff) |
QoS for internal dispatch queues
Diffstat (limited to 'src/objective-c')
-rw-r--r-- | src/objective-c/GRPCClient/GRPCCall.m | 11 | ||||
-rw-r--r-- | src/objective-c/ProtoRPC/ProtoRPC.m | 6 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m index eb9b21eccb..df50d43e07 100644 --- a/src/objective-c/GRPCClient/GRPCCall.m +++ b/src/objective-c/GRPCClient/GRPCCall.m @@ -108,7 +108,12 @@ const char *kCFStreamVarName = "grpc_cfstream"; _handler = responseHandler; _initialMetadataPublished = NO; _pipe = [GRXBufferedPipe pipe]; - _dispatchQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL); + if (@available(iOS 8.0, *)) { + _dispatchQueue = dispatch_queue_create(NULL, dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_DEFAULT, -1)); + } else { + // Fallback on earlier versions + _dispatchQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL); + } _started = NO; } @@ -226,7 +231,7 @@ const char *kCFStreamVarName = "grpc_cfstream"; } - (void)issueInitialMetadata:(NSDictionary *)initialMetadata { - id<GRPCResponseHandler> handler = self->_handler; + id<GRPCResponseHandler> handler = _handler; if ([handler respondsToSelector:@selector(receivedInitialMetadata:)]) { dispatch_async(handler.dispatchQueue, ^{ [handler receivedInitialMetadata:initialMetadata]; @@ -235,7 +240,7 @@ const char *kCFStreamVarName = "grpc_cfstream"; } - (void)issueMessage:(id)message { - id<GRPCResponseHandler> handler = self->_handler; + id<GRPCResponseHandler> handler = _handler; if ([handler respondsToSelector:@selector(receivedRawMessage:)]) { dispatch_async(handler.dispatchQueue, ^{ [handler receivedRawMessage:message]; diff --git a/src/objective-c/ProtoRPC/ProtoRPC.m b/src/objective-c/ProtoRPC/ProtoRPC.m index 7a57affbf1..b860515d4e 100644 --- a/src/objective-c/ProtoRPC/ProtoRPC.m +++ b/src/objective-c/ProtoRPC/ProtoRPC.m @@ -77,7 +77,11 @@ _handler = handler; _callOptions = [callOptions copy]; _responseClass = responseClass; - _dispatchQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL); + if (@available(iOS 8.0, *)) { + _dispatchQueue = dispatch_queue_create(NULL, dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_DEFAULT, -1)); + } else { + _dispatchQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL); + } [self start]; } |