diff options
author | Muxi Yan <mxyan@google.com> | 2018-10-16 17:10:32 -0700 |
---|---|---|
committer | Muxi Yan <mxyan@google.com> | 2018-10-16 17:10:32 -0700 |
commit | 7d32a2cb25275e03a44184ad9f8a3e494e62dd0d (patch) | |
tree | 3269faf207438c68dfe5e12e42a6f1f1f25aa4dc /src/objective-c/ProtoRPC/ProtoRPC.m | |
parent | da43545ff7b4b1a6e310ff7fdeec6eb21f0e26b8 (diff) |
Set user's dispatch queue's handler to internal serial queue
Diffstat (limited to 'src/objective-c/ProtoRPC/ProtoRPC.m')
-rw-r--r-- | src/objective-c/ProtoRPC/ProtoRPC.m | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/objective-c/ProtoRPC/ProtoRPC.m b/src/objective-c/ProtoRPC/ProtoRPC.m index b860515d4e..9fb398408b 100644 --- a/src/objective-c/ProtoRPC/ProtoRPC.m +++ b/src/objective-c/ProtoRPC/ProtoRPC.m @@ -72,6 +72,16 @@ responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *)callOptions responseClass:(Class)responseClass { + if (requestOptions.host.length == 0 || requestOptions.path.length == 0) { + [NSException raise:NSInvalidArgumentException format:@"Neither host nor path can be nil."]; + } + if (requestOptions.safety > GRPCCallSafetyCacheableRequest) { + [NSException raise:NSInvalidArgumentException format:@"Invalid call safety value."]; + } + if (handler == nil) { + [NSException raise:NSInvalidArgumentException format:@"Response handler required."]; + } + if ((self = [super init])) { _requestOptions = [requestOptions copy]; _handler = handler; @@ -82,6 +92,7 @@ } else { _dispatchQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL); } + dispatch_set_target_queue(handler.dispatchQueue, _dispatchQueue); [self start]; } |