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));
}
}
}