Axiom.Core.MeterManager.DumpEventLog C# (CSharp) Method

DumpEventLog() protected method

protected DumpEventLog ( ) : void
return void
		protected void DumpEventLog()
		{
			if ( File.Exists( MeterEventsFilename ) )
				File.Delete( MeterEventsFilename );
			FileStream f = new FileStream( MeterEventsFilename, FileMode.Create, FileAccess.Write );
			StreamWriter writer = new StreamWriter( f );
			writer.Write( string.Format( "Dumping meter event log on {0} at {1}; units are usecs\r\n",
									   DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString() ) );
			int indent = 0;
			List<MeterStackEntry> meterStack = new List<MeterStackEntry>();
			long firstEventTime = 0;
			for ( int i = 0; i < eventTrace.Count; i++ )
			{
				short kind = eventTrace[ i ].eventKind;
				long t = eventTrace[ i ].eventTime;
				if ( i == 0 )
					firstEventTime = t;
				if ( kind == ekInfo )
				{
					writer.WriteLine( string.Format( "{0,12:D} {1}{2} {3}{4}",
												   ToMicroseconds( t - firstEventTime ),
												   IndentCount( indent ), "Info ", " ",
												   eventTrace[ i ].info ) );
					continue;
				}
				TimingMeter meter = GetMeterById( eventTrace[ i ].meterId );
				if ( kind == ekEnter )
				{
					indent++;
					writer.WriteLine( string.Format( "{0,12:D} {1}{2} {3}.{4}",
												   ToMicroseconds( t - firstEventTime ),
												   IndentCount( indent ),
												   "Enter",
												   meter.category, meter.title ) );
					meterStack.Add( new MeterStackEntry( meter, t ) );
				}
				else if ( kind == ekExit )
				{
					Debug.Assert( meterStack.Count > 0, "Meter stack is empty during ekExit" );
					MeterStackEntry s = meterStack[ meterStack.Count - 1 ];
					Debug.Assert( s.meter == meter, "Entered " + s.meter.title + "; Exiting " + meter.title );
					writer.WriteLine( string.Format( "{0,12:D} {1}{2} {3}.{4}",
												   ToMicroseconds( t - s.eventTime ),
												   IndentCount( indent ),
												   "Exit ",
												   meter.category, meter.title ) );
					indent--;
					meterStack.RemoveAt( meterStack.Count - 1 );
				}
			}
			writer.Close();
		}