public ServiceStatus GetStatus(ServiceEnum serviceName) { log.DebugFormat("GetStatus: serviceName = {0}", serviceName); try { using (var xplatServiceController = XplatServiceController.GetXplatServiceController(serviceName)) { return(xplatServiceController.GetServiceStatus()); } } catch (Exception ex) { log.ErrorFormat("Error on GetStatus. {0} {1} {2}", ex.ToString(), ex.StackTrace, ex.InnerException != null ? ex.InnerException.Message : string.Empty); return(ServiceStatus.NotFound); } }
public string StopService(ServiceEnum serviceName) { string status; try { log.DebugFormat("StopService: serviceName = {0}", serviceName); using (var xplatServiceController = XplatServiceController.GetXplatServiceController(serviceName)) { var serviceStatus = xplatServiceController.GetServiceStatus(); switch (serviceStatus) { case ServiceStatus.Running: status = xplatServiceController.StopService(); if (status != string.Empty) { serviceRepository.SetStates(serviceName, ServiceStatus.Stopped.GetStringStatus(), string.Empty); log.DebugFormat("Service stopped on the local machine: serviceName = {0}, serviceStatus = {1}", serviceName, serviceStatus); } break; case ServiceStatus.Stopped: case ServiceStatus.StopPending: case ServiceStatus.StartPending: log.ErrorFormat("Service still not started on the current machine: serviceName = {0}, serviceStatus = {1}", serviceName, serviceStatus); status = HealthCheckResource.ServiceStillNotStarted; break; default: log.ErrorFormat("Service not found on the current machine: serviceName = {0}, serviceStatus = {1}", serviceName, serviceStatus); status = ServiceStatus.NotFound.GetStringStatus(); break; } } } catch (Exception ex) { status = HealthCheckResource.ServiceStopError; log.ErrorFormat("Error on StopService. {0} {1} {2}", ex.Message, ex.StackTrace, ex.InnerException != null ? ex.InnerException.Message : string.Empty); } return(status); }
private static void IdleTimeout(object e) { var healthCheckSettings = HealthCheckSettingsAccessor.GetHealthCheckSettings(); /* * var tenants = CoreContext.TenantManager.GetTenants().Where(t => t.TenantId != healthCheckSettings.FakeTenantId).ToList(); * if (tenants.Count() <= 0 || !CoreContext.TenantManager.GetTenantQuota(tenants.First().TenantId).HealthCheck) * { * log.Debug("Service wasn't started. There is no correct license for HealthCheck."); * return; * }*/ log.Debug("Begin IdleTimeout"); CoreContext.TenantManager.SetCurrentTenant(healthCheckSettings.FakeTenantId); Thread.CurrentThread.CurrentCulture = CoreContext.TenantManager.GetCurrentTenant().GetCulture(); try { var serviceName = (ServiceEnum)e; ServiceStatus serviceStatus; using (var xplatServiceController = XplatServiceController.GetXplatServiceController(serviceName)) { serviceStatus = xplatServiceController.GetServiceStatus(); } switch (serviceStatus) { case ServiceStatus.StartPending: // wait till started break; case ServiceStatus.Running: var result = serviceRepository.GetService(serviceName).Check(healthCheckSettings.FakeTenantId); if (result != null) { serviceRepository.SetStates(serviceName, (result == string.Empty ? ServiceStatus.Running : ServiceStatus.NotFound).GetStringStatus(), result); //if (result != string.Empty) //{ // HasAttempt(serviceName); //} //else //{ // serviceRepository.DropAttempt(serviceName); //} } break; case ServiceStatus.NotFound: serviceRepository.SetStates(serviceName, ServiceStatus.NotFound.GetStringStatus(), ServiceStatus.NotFound.GetMessageStatus()); //HasAttempt(serviceName); break; default: serviceRepository.SetStates(serviceName, ServiceStatus.Stopped.GetStringStatus(), ServiceStatus.Stopped.GetMessageStatus()); //HasAttempt(serviceName); break; } } catch (Exception ex) { log.ErrorFormat("Error on IdleTimeout. {0} {1}", ex.ToString(), ex.InnerException != null ? ex.InnerException.Message : string.Empty); } finally { log.Debug("End IdleTimeout"); } }