aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objective-c/ProtoRPC/ProtoRPC.m
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2018-10-16 17:10:32 -0700
committerGravatar Muxi Yan <mxyan@google.com>2018-10-16 17:10:32 -0700
commit7d32a2cb25275e03a44184ad9f8a3e494e62dd0d (patch)
tree3269faf207438c68dfe5e12e42a6f1f1f25aa4dc /src/objective-c/ProtoRPC/ProtoRPC.m
parentda43545ff7b4b1a6e310ff7fdeec6eb21f0e26b8 (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.m11
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];
}