|
|
@ -54,17 +54,13 @@ |
|
|
|
}); |
|
|
|
}); |
|
|
|
GRPCChannel *channel = channelCache[host]; |
|
|
|
GRPCChannel *channel = channelCache[host]; |
|
|
|
if (!channel) { |
|
|
|
if (!channel) { |
|
|
|
channel = [[self alloc] initWithHost:host]; |
|
|
|
channel = [self uncachedChannelToHost:host]; |
|
|
|
channelCache[host] = channel; |
|
|
|
channelCache[host] = channel; |
|
|
|
} |
|
|
|
} |
|
|
|
return channel; |
|
|
|
return channel; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)init { |
|
|
|
+ (instancetype)uncachedChannelToHost:(NSString *)host { |
|
|
|
return [self initWithHost:nil]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)initWithHost:(NSString *)host { |
|
|
|
|
|
|
|
if (![host rangeOfString:@"://"].length) { |
|
|
|
if (![host rangeOfString:@"://"].length) { |
|
|
|
// No scheme provided; assume https. |
|
|
|
// No scheme provided; assume https. |
|
|
|
host = [@"https://" stringByAppendingString:host]; |
|
|
|
host = [@"https://" stringByAppendingString:host]; |
|
|
@ -86,6 +82,10 @@ |
|
|
|
return nil; // silence warning. |
|
|
|
return nil; // silence warning. |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)init { |
|
|
|
|
|
|
|
return [self initWithChannel:NULL hostName:nil]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)initWithChannel:(struct grpc_channel *)unmanagedChannel |
|
|
|
- (instancetype)initWithChannel:(struct grpc_channel *)unmanagedChannel |
|
|
|
hostName:(NSString *)hostName { |
|
|
|
hostName:(NSString *)hostName { |
|
|
|
if (!unmanagedChannel || !hostName) { |
|
|
|
if (!unmanagedChannel || !hostName) { |
|
|
@ -113,12 +113,8 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
- (void)dealloc { |
|
|
|
- (void)dealloc { |
|
|
|
// _unmanagedChannel is NULL when deallocating an object of the base class (because the |
|
|
|
|
|
|
|
// initializer returns a different object). |
|
|
|
|
|
|
|
if (_unmanagedChannel) { |
|
|
|
|
|
|
|
// TODO(jcanizales): Be sure to add a test with a server that closes the connection prematurely, |
|
|
|
// TODO(jcanizales): Be sure to add a test with a server that closes the connection prematurely, |
|
|
|
// as in the past that made this call to crash. |
|
|
|
// as in the past that made this call to crash. |
|
|
|
grpc_channel_destroy(_unmanagedChannel); |
|
|
|
grpc_channel_destroy(_unmanagedChannel); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@end |
|
|
|
@end |
|
|
|