private Task <HttpResponseMessage>[] SendStateChangedEvent(AppInfoEx appInfo) { var tasks = new List <Task <HttpResponseMessage> >(); var appsState = new Contracts.AppStateInfo() { Hash = appInfo.Hash, Time = appInfo.Time }; var stateEvent = new Contracts.StateChangedEvent(); stateEvent.ServiceName = _serviceConfig.GetServiceName(); stateEvent.AppState = appsState; var services = _servicesCollector.GetServices(); for (var i = 0; i < services.Count; ++i) { if ((services[i].Name.IndexOf(_serviceConfig.GetServiceName()) == -1) && services[i].Active) { string jsonString = JsonConvert.SerializeObject(stateEvent); HttpContent content = new StringContent(jsonString); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); try { tasks.Add(_httpClient.PostAsync(services[i].Url, content)); } catch (Exception) { services[i].Active = false; } } } return(tasks.ToArray()); }
private static async Task <string[]> InitStartupState() { var tasks = new List <Task <string> >(); var services = _servicesCollector.GetServices(); for (var i = 0; i < services.Count; ++i) { if ((services[i].Name.IndexOf(_serviceConfig.GetServiceName()) == -1) && services[i].Active) { var initServiceStateTask = GetInitServiceState(services[i]); tasks.Add(initServiceStateTask); var serviceState = await initServiceStateTask; if (serviceState != null) { var appsState = JsonConvert.DeserializeObject <AppsHash>(serviceState); ProcessAppsSate(appsState, services[i]); } } } return(await Task.WhenAll(tasks.ToArray())); }