private void ReadTraceFile(string filename)
{
var traceFile = new TraceFile();
traceFile.InitializeAsReader(filename);
var eventClassOrdinal = traceFile.GetOrdinal("EventClass");
var textDataOrdinal = traceFile.GetOrdinal("TextData");
//var databaseNameOrdinal = traceFile.GetOrdinal("DatabaseName");
var startTimeOrdinal = traceFile.GetOrdinal("StartTime");
var durationOrdinal = traceFile.GetOrdinal("Duration");
while (traceFile.Read())
{
var eventClass = traceFile.GetString(eventClassOrdinal);
// skip on start, end on stop
if (eventClass.Equals("trace start", StringComparison.InvariantCultureIgnoreCase)) continue;
if (eventClass.Equals("trace stop", StringComparison.InvariantCultureIgnoreCase)) break;
var textData = traceFile.GetString(textDataOrdinal);
//var databaseName = traceFile.GetString(databaseNameOrdinal);
var startTime = traceFile.GetDateTime(startTimeOrdinal);
var duration = traceFile.GetInt64(durationOrdinal)/1000; // duration is in microseconds
// send the canonical query to the agent
_agentConnect.Store(new Sample
{
//Method = databaseName,
Uri = _parser.Rewrite(textData),
ResponseTime = duration,
Timestamp = startTime.Ticks
}, Logger);
DebugHelper.LogEntry(_eventLog, string.Format("Data sent: '{0}'", textData), EventLogEntryType.SuccessAudit);
}
traceFile.Close();
}