コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
        }