Keep a singleton of connectivity monitor in GRPCHost

pull/8441/head
Muxi Yan 8 years ago
parent 6ac6a52dcf
commit ad93106da0
  1. 25
      src/objective-c/GRPCClient/private/GRPCHost.m

@ -100,19 +100,16 @@ static GRPCConnectivityMonitor *connectivityMonitor = nil;
_address = address; _address = address;
_secure = YES; _secure = YES;
kHostCache[address] = self; kHostCache[address] = self;
}
// When there is host in the cache, keep a single monitor to the network // Keep a single monitor to flush the cache if the connectivity status changed
// to if (!connectivityMonitor) {
// flush the cache if the connectivity status changed connectivityMonitor =
if (!connectivityMonitor) { [GRPCConnectivityMonitor monitorWithHost:hostURL.host];
connectivityMonitor = void (^handler)() = ^{
[GRPCConnectivityMonitor monitorWithHost:hostURL.host]; [GRPCHost flushChannelCache];
void (^handler)() = ^{ };
[GRPCHost flushChannelCache]; [connectivityMonitor handleLossWithHandler:handler
}; wifiStatusChangeHandler:handler];
[connectivityMonitor handleLossWithHandler:handler
wifiStatusChangeHandler:handler];
}
} }
} }
return self; return self;
@ -125,8 +122,6 @@ static GRPCConnectivityMonitor *connectivityMonitor = nil;
BOOL * _Nonnull stop) { BOOL * _Nonnull stop) {
[host disconnect]; [host disconnect];
}]; }];
[kHostCache removeAllObjects];
connectivityMonitor = nil;
} }
} }

Loading…
Cancel
Save