public async Task Unsubscribe(string serviceName, string groupName, List <string> clusters, IEventListener listener) { string clustersString = string.Join(",", clusters); _changeNotifier.DeregisterListener(groupName, serviceName, clustersString, listener); if (!_changeNotifier.IsSubscribed(groupName, serviceName, clustersString)) { await _clientProxy.Unsubscribe(serviceName, groupName, clustersString).ConfigureAwait(false); } }
private async Task RunUpdateTask(string serviceName, string groupName, string clusters) { int delayTime = -1; var serviceKey = ServiceInfo.GetKey(NamingUtils.GetGroupedName(serviceName, groupName), clusters); try { if (!changeNotifier.IsSubscribed(groupName, serviceName, clusters) && !_updatingMap.ContainsKey(serviceKey)) { // TODO logger return; } if (!serviceInfoHolder.GetServiceInfoMap().TryGetValue(serviceKey, out var serviceObj)) { serviceObj = await namingClientProxy.QueryInstancesOfService(serviceName, groupName, clusters, 0, false); serviceInfoHolder.ProcessServiceInfo(serviceObj); delayTime = DEFAULT_DELAY; // TODO lastRefTime serviceObj.LastRefTime return; } if (serviceObj.LastRefTime <= 0) { serviceObj = await namingClientProxy.QueryInstancesOfService(serviceName, groupName, clusters, 0, false); serviceInfoHolder.ProcessServiceInfo(serviceObj); } // TODO lastRefTime serviceObj.LastRefTime if (serviceObj.Hosts == null || serviceObj.Hosts.Any()) { // incFailCount return; } delayTime = (int)serviceObj.CacheMillis * DEFAULT_UPDATE_CACHE_TIME_MULTIPLE; // resetFailCount } catch (System.Exception) { // logger } finally { // next } }