public void TerminateAllProcesses() { List <string> allProcessGuids = new List <string>(); lock (s_lock) { allProcessGuids = m_VisitProcess.Select(item => item.Value).Where(processGUID => IsValidProcess(processGUID)).Distinct().ToList(); m_InvalidProcesses.Clear(); m_VisitProcess.Clear(); m_ProcessAvailableSlots.Clear(); } foreach (string processGuid in allProcessGuids) { try { StatusEngineResponse response = ExecuteGetStatus(processGuid); if (response.ResponseCode == EngineResponseCode.Success) { ExecuteRemoveAllEpisodes(processGuid); Process p = Process.GetProcessById(response.ProcessId); p.Kill(); } } catch (Exception) { PatternsProcessorWrapper.Source.TraceEvent(TraceEventType.Warning, 110, "The Patterns Processor (GUID={0}) could not be stopped. It will automatically stop after the configured period of time.", processGuid); } } }
private StatusEngineResponse ExecuteGetStatus(string processGUID) { using (ChannelFactory <IPatternsProcessorMessages> factory = CreateChannelFactory(processGUID)) { IPatternsProcessorMessages channel = factory.CreateChannel(); try { StatusEngineResponse response = channel.GetStatus(); if (response.ResponseCode != EngineResponseCode.Success) { throw new Exception(response.ErrorMessage); } return(response); } catch (Exception ex) { throw ex; } finally { CloseChannel((ICommunicationObject)channel); } } }
public StatusEngineResponse GetStatus() { StatusEngineResponse toRet; try { m_LastRequest = DateTime.Now; string[] activeVisits = Bridge.ActiveVisits; //LogActiveVisits(activeVisits); toRet = new StatusEngineResponse() { ProcessId = PatternsProcessorSettings.Instance.ProcessId, ActiveVisits = activeVisits, ResponseCode = EngineResponseCode.Success }; } catch (Exception ex) { toRet = new StatusEngineResponse() { ResponseCode = EngineResponseCode.Error, ErrorMessage = ex.ToString() }; } return(toRet); }