Create connectivityMonitor after call is set up

pull/8441/head
Muxi Yan 8 years ago
parent 7f77310255
commit 4f6a19b292
  1. 48
      src/objective-c/GRPCClient/GRPCCall.m

@ -409,9 +409,26 @@ static NSMutableDictionary *callFlags;
_state = GRXWriterStateStarted;
}
// Create a retain cycle so that this instance lives until the RPC finishes
// (or is cancelled). This makes RPCs in which the call isn't externally
// retained possible (as long as it is started before being autoreleased).
// Care is taken not to retain self strongly in any of the blocks used in this
// implementation, so that the life of the instance is determined by this
// retain cycle.
_retainSelf = self;
_responseWriteable =
[[GRXConcurrentWriteable alloc] initWithWriteable:writeable];
_wrappedCall = [[GRPCWrappedCall alloc] initWithHost:_host path:_path];
NSAssert(_wrappedCall, @"Error allocating RPC objects. Low memory?");
[self sendHeaders:_requestHeaders];
[self invokeCall];
// TODO(jcanizales): Extract this logic somewhere common.
NSString *host =
[NSURL URLWithString:[@"https://" stringByAppendingString:_host]].host;
[NSURL URLWithString:[@"https://" stringByAppendingString:_host]].host;
if (!host) {
// TODO(jcanizales): Check this on init.
[NSException raise:NSInvalidArgumentException
@ -423,34 +440,17 @@ static NSMutableDictionary *callFlags;
typeof(self) strongSelf = weakSelf;
if (strongSelf) {
[strongSelf
finishWithError:[NSError errorWithDomain:kGRPCErrorDomain
code:GRPCErrorCodeUnavailable
userInfo:@{
NSLocalizedDescriptionKey :
@"Connectivity lost."
}]];
finishWithError:[NSError errorWithDomain:kGRPCErrorDomain
code:GRPCErrorCodeUnavailable
userInfo:@{
NSLocalizedDescriptionKey :
@"Connectivity lost."
}]];
}
};
[_connectivityMonitor handleLossWithHandler:handler
wifiStatusChangeHandler:^{
}];
// Create a retain cycle so that this instance lives until the RPC finishes
// (or is cancelled). This makes RPCs in which the call isn't externally
// retained possible (as long as it is started before being autoreleased).
// Care is taken not to retain self strongly in any of the blocks used in this
// implementation, so that the life of the instance is determined by this
// retain cycle.
_retainSelf = self;
_responseWriteable =
[[GRXConcurrentWriteable alloc] initWithWriteable:writeable];
_wrappedCall = [[GRPCWrappedCall alloc] initWithHost:_host path:_path];
NSAssert(_wrappedCall, @"Error allocating RPC objects. Low memory?");
[self sendHeaders:_requestHeaders];
[self invokeCall];
}
- (void)setState:(GRXWriterState)newState {

Loading…
Cancel
Save