Пример #1
0
        private UIFilterSettings CreateUIFilterSettings()
        {
            var settUIFilters = new UIFilterSettings();

            settUIFilters.IncludePresenceMsgs       = this.cbAutoIncludePresense.Checked;
            settUIFilters.ExcludeThsMonitorMessages = true;

            if (cbAutoFilterCallId.Checked)
            {
                string sCallIdRegex = @"Call-ID:\s";
                if (tbAutoFilterCallId.Text.Contains(","))
                {
                    sCallIdRegex +=
                        string.Concat(
                            "(",
                            string.Join("|", tbAutoFilterCallId.Text.Split(',').Select(s => Regex.Escape(s.Trim())).ToArray()),
                            ")");
                }
                else
                {
                    sCallIdRegex += tbAutoFilterCallId.Text;
                }
                settUIFilters.CallIdFilterText = sCallIdRegex;
            }

            settUIFilters.DateTimeFrom = cbDateFrom.Checked
                ? DateTime.ParseExact(dtpDateTimeFrom.Text,
                                      "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal)
                : (DateTime?)null;

            settUIFilters.DateTimeTo = cbDateTo.Checked
                ? DateTime.ParseExact(dtpDateTo.Text,
                                      "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal)
                : (DateTime?)null;

            settUIFilters.IncludeSIP200 = cbIncludeSIP200OK.Checked;

            return(settUIFilters);
        }
Пример #2
0
        public static void ExtractMessagesFromFiles(IEnumerable <ACSLogFile> mLogsToProcess,
                                                    string directory, List <Message> messages, UIFilterSettings settUIFilters,
                                                    bool doCreateSeparateMessageLists, Action <string> uiSyncAction)
        {
            foreach (var logFile in mLogsToProcess)
            {
                settUIFilters.FilterRTSMMessages = (logFile.SourceType == SourceType.RTSM_in_thslog);

                var processorSettings = new LogProcessorSettings()
                {
                    LogFile = logFile, UIFS = settUIFilters, CreateSeparateMessageLists = doCreateSeparateMessageLists
                };

                var    lp                = new LogProcessor();
                string resultPath        = string.Empty;
                int    prevMessagesCount = messages.Count;
                try
                {
                    resultPath = lp.ProcessLogFile(directory, processorSettings, m => messages.Add(m));
                    var messagesProcessedCount = messages.Count - prevMessagesCount;
                    var updateStatusText       =
                        string.Format("Processed file {0}.{2}{1}{2}",
                                      logFile.LogFileName,
                                      messagesProcessedCount == 0
                            ? string.Format("No {0} messages found.", logFile.SourceType)
                            : string.Format("Parsed {0} {1} message(s).", messagesProcessedCount, logFile.SourceType),
                                      Environment.NewLine);

                    if (processorSettings.CreateSeparateMessageLists)
                    {
                        updateStatusText += string.Format("Generated file:{0}{1}{0}", Environment.NewLine, resultPath);
                    }

                    updateStatusText += Environment.NewLine;
                    uiSyncAction(updateStatusText);
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(
                              string.Format("An error occured when processing file{0}{1}{2}{3}", logFile.LogFileName, Environment.NewLine, "Error:", ex)
                              , ex);
                }

                System.GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }