Revert API to change default queue for a stub

pull/10505/head
Muxi Yan 8 years ago
parent 2f23be7e8c
commit 8805306941
  1. 34
      src/compiler/objective_c_generator.cc
  2. 68
      src/objective-c/tests/InteropTests.m

@ -149,20 +149,17 @@ void PrintMethodDeclarations(Printer *printer, const MethodDescriptor *method) {
void PrintSimpleImplementation(Printer *printer, const MethodDescriptor *method,
map< ::grpc::string, ::grpc::string> vars) {
printer->Print("{\n");
printer->Print(vars, " GRPCProtoCall *rpc = [self RPCTo$method_name$With");
printer->Print(vars, " [[self RPCTo$method_name$With");
if (method->client_streaming()) {
printer->Print("RequestsWriter:requestWriter");
} else {
printer->Print("Request:request");
}
if (method->server_streaming()) {
printer->Print(" eventHandler:eventHandler];\n");
printer->Print(" eventHandler:eventHandler] start];\n");
} else {
printer->Print(" handler:handler];\n");
printer->Print(" handler:handler] start];\n");
}
printer->Print(
" [rpc setResponseDispatchQueue:_defaultResponseDispatchQueue];\n");
printer->Print(" [rpc start];\n");
printer->Print("}\n");
}
@ -170,29 +167,23 @@ void PrintAdvancedImplementation(Printer *printer,
const MethodDescriptor *method,
map< ::grpc::string, ::grpc::string> vars) {
printer->Print("{\n");
printer->Print(
vars, " GRPCProtoCall *rpc = [self RPCToMethod:@\"$method_name$\"\n");
printer->Print(vars, " return [self RPCToMethod:@\"$method_name$\"\n");
printer->Print(" requestsWriter:");
printer->Print(" requestsWriter:");
if (method->client_streaming()) {
printer->Print("requestWriter\n");
} else {
printer->Print("[GRXWriter writerWithValue:request]\n");
}
printer->Print(
vars,
" responseClass:[$response_class$ class]\n");
printer->Print(vars, " responseClass:[$response_class$ class]\n");
printer->Print(" responsesWriteable:[GRXWriteable ");
printer->Print(" responsesWriteable:[GRXWriteable ");
if (method->server_streaming()) {
printer->Print("writeableWithEventHandler:eventHandler]];\n");
} else {
printer->Print("writeableWithSingleHandler:handler]];\n");
}
printer->Print(
" [rpc setResponseDispatchQueue:_defaultResponseDispatchQueue];\n");
printer->Print(" return rpc;\n");
printer->Print("}\n");
}
@ -243,8 +234,6 @@ void PrintMethodImplementations(Printer *printer,
"- (instancetype)initWithHost:(NSString *)host"
" NS_DESIGNATED_INITIALIZER;\n");
printer.Print("+ (instancetype)serviceWithHost:(NSString *)host;\n");
printer.Print(
"- (void)setDefaultResponseDispatchQueue:(dispatch_queue_t)queue;\n");
printer.Print("@end\n");
}
return output;
@ -262,15 +251,12 @@ void PrintMethodImplementations(Printer *printer,
{"service_class", ServiceClassName(service)},
{"package", service->file()->package()}};
printer.Print(vars, "@implementation $service_class$ {\n");
printer.Print(vars, " dispatch_queue_t _defaultResponseDispatchQueue;\n");
printer.Print(vars, "}\n\n");
printer.Print(vars, "@implementation $service_class$\n\n");
printer.Print("// Designated initializer\n");
printer.Print("- (instancetype)initWithHost:(NSString *)host {\n");
printer.Print(
vars,
" _defaultResponseDispatchQueue = dispatch_get_main_queue();\n"
" return (self = [super initWithHost:host"
" packageName:@\"$package$\" serviceName:@\"$service_name$\"]);\n");
printer.Print("}\n\n");
@ -284,10 +270,6 @@ void PrintMethodImplementations(Printer *printer,
printer.Print("}\n\n");
printer.Print("+ (instancetype)serviceWithHost:(NSString *)host {\n");
printer.Print(" return [[self alloc] initWithHost:host];\n");
printer.Print("}\n\n");
printer.Print(
"- (void)setDefaultResponseDispatchQueue:(dispatch_queue_t)queue {\n");
printer.Print(" _defaultResponseDispatchQueue = queue;\n");
printer.Print("}\n\n\n");
for (int i = 0; i < service->method_count(); i++) {

@ -459,23 +459,17 @@
- (void)testAlternateDispatchQueue {
XCTAssertNotNil(self.class.host);
__weak XCTestExpectation *expectation1 = [self expectationWithDescription:@"AlternateDispatchQueue1"];
NSNumber *kPayloadSize = @256;
id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:kPayloadSize
requestedResponseSize:kPayloadSize];
NSArray *requests = @[@27182, @8, @1828, @45904];
NSArray *responses = @[@31415, @9, @2653, @58979];
__weak XCTestExpectation *expectation1 = [self expectationWithDescription:@"AlternateDispatchQueue1"];
// Set the default dispatch queue
NSString *queue1_label = @"test.queue1";
NSString *queue2_label = @"test.queue2";
dispatch_queue_t queue1 = dispatch_queue_create([queue1_label UTF8String], DISPATCH_QUEUE_SERIAL);
dispatch_queue_t queue2 = dispatch_queue_create([queue2_label UTF8String], DISPATCH_QUEUE_SERIAL);
[_service setDefaultResponseDispatchQueue:queue1];
NSString *queue_label = @"test.queue1";
dispatch_queue_t queue = dispatch_queue_create([queue_label UTF8String], DISPATCH_QUEUE_SERIAL);
GRXBufferedPipe *requestsBuffer1 = [[GRXBufferedPipe alloc] init];
__block int index = 0;
id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
requestedResponseSize:responses[index]];
[requestsBuffer1 writeValue:request];
[_service fullDuplexCallWithRequestsWriter:requestsBuffer1
@ -485,26 +479,11 @@
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
XCTAssertTrue(done || response, @"Event handler called without an event.");
NSString *label = [NSString stringWithUTF8String:dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)];
XCTAssert([label isEqualToString:queue1_label]);
if (response) {
XCTAssertLessThan(index, 4, @"More than 4 responses received.");
id expected = [RMTStreamingOutputCallResponse messageWithPayloadSize:responses[index]];
XCTAssertEqualObjects(response, expected);
index += 1;
if (index < 4) {
id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
requestedResponseSize:responses[index]];
[requestsBuffer1 writeValue:request];
} else {
[requestsBuffer1 writesFinishedWithError:nil];
}
}
NSLog(@"main queue label:%@", label);
NSString *main_queue_label = [NSString stringWithUTF8String:dispatch_queue_get_label(dispatch_get_main_queue())];
XCTAssert([label isEqualToString:main_queue_label]);
if (done) {
XCTAssertEqual(index, 4, @"Received %i responses instead of 4.", index);
[expectation1 fulfill];
}
[expectation1 fulfill];
}];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
@ -513,8 +492,6 @@
__weak XCTestExpectation *expectation2 = [self expectationWithDescription:@"AlternateDispatchQueue2"];
GRXBufferedPipe *requestsBuffer2 = [[GRXBufferedPipe alloc] init];
index = 0;
[requestsBuffer2 writeValue:request];
GRPCProtoCall *rpc = [_service RPCToFullDuplexCallWithRequestsWriter:requestsBuffer2
@ -524,32 +501,13 @@
XCTAssertNil(error, @"Finished with unexpected error: %@", error);
XCTAssertTrue(done || response, @"Event handler called without an event.");
NSString *label = [NSString stringWithUTF8String:dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)];
XCTAssert([label isEqualToString:queue2_label]);
if (response) {
XCTAssertLessThan(index, 4, @"More than 4 responses received.");
id expected = [RMTStreamingOutputCallResponse messageWithPayloadSize:responses[index]];
XCTAssertEqualObjects(response, expected);
index += 1;
if (index < 4) {
id request = [RMTStreamingOutputCallRequest messageWithPayloadSize:requests[index]
requestedResponseSize:responses[index]];
[requestsBuffer2 writeValue:request];
} else {
[requestsBuffer2 writesFinishedWithError:nil];
}
}
if (done) {
XCTAssertEqual(index, 4, @"Received %i responses instead of 4.", index);
[expectation2 fulfill];
}
XCTAssert([label isEqualToString:queue_label]);
[expectation2 fulfill];
}];
[rpc setResponseDispatchQueue:queue2];
[rpc setResponseDispatchQueue:queue];
[rpc start];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
[_service setDefaultResponseDispatchQueue:dispatch_get_main_queue()];
}
@end

Loading…
Cancel
Save