Alphashack.Graphdat.Agent.SqlTrace.SqlTraceReader.FindInstanceTraces C# (CSharp) Method

FindInstanceTraces() private method

private FindInstanceTraces ( TraceInfo>.Dictionary instances ) : void
instances TraceInfo>.Dictionary
return void
        private void FindInstanceTraces(Dictionary<string, TraceInfo> instances)
        {
            var files = Directory.GetFiles(_workDirectory, @"graphdat*.trc");
            var regex = new Regex(string.Format(@"^{0}\\graphdat_((?<instanceName>.*)_(?<fileNumber>\d+)\.trc|(?<instanceName>.*)\.trc)$", Regex.Escape(_workDirectory)));
            DebugHelper.LogEntry(_eventLog, string.Format("{0} instance traces found", files.Length));
            foreach (var file in files)
            {
                var match = regex.Match(file);
                if (!match.Success || !match.Groups["instanceName"].Success)
                {
                    DebugHelper.LogEntry(_eventLog, string.Format("File '{0}' regex failed: match {1}, group {2}", file, match.Success, match.Groups["instanceName"].Success));
                    continue;
                }
                var instanceName = match.Groups["instanceName"].Value;
                var fileNumber = match.Groups["fileNumber"].Success
                                     ? int.Parse(match.Groups["fileNumber"].Value)
                                     : 0;

                if (!instances.ContainsKey(instanceName))
                {
                    DebugHelper.LogEntry(_eventLog, string.Format("First instance trace: {0} ({1})", instanceName, fileNumber));
                    instances[instanceName] = new TraceInfo { MaxFileNumber = fileNumber };
                }
                else if (instances[instanceName].MaxFileNumber < fileNumber)
                {
                    DebugHelper.LogEntry(_eventLog, string.Format("New instance trace: {0} ({1})", instanceName, fileNumber));
                    instances[instanceName].TraceRead = false;
                    instances[instanceName].MaxFileNumber = fileNumber;
                }
                else
                {
                    DebugHelper.LogEntry(_eventLog, string.Format("Old instance trace: {0} ({1}, last: {2})", instanceName, fileNumber, instances[instanceName].MaxFileNumber));
                }
            }
        }