@@ -93,6 +93,18 @@ protected string BuildPerformanceString()
9393
9494 protected abstract string GetEventMessage ( Trace2FormatTarget formatTarget ) ;
9595
96+ private string GetSource ( )
97+ {
98+ // Source column format is file:line
99+ string source = $ "{ File } :{ Line } ";
100+ if ( source . Length > SourceColumnMaxWidth )
101+ {
102+ return TraceUtils . FormatSource ( source , SourceColumnMaxWidth ) ;
103+ }
104+
105+ return source ;
106+ }
107+
96108 internal static string BuildTimeSpan ( double time )
97109 {
98110 var timeString = time . ToString ( "F6" ) ;
@@ -102,46 +114,72 @@ internal static string BuildTimeSpan(double time)
102114 BeginPadding = 2 ,
103115 EndPadding = 1
104116 } ;
105- AdjustPadding ( component , timeString ) ;
106117
107- var beginPadding = new string ( ' ' , component . BeginPadding ) ;
108- var endPadding = new string ( ' ' , component . EndPadding ) ;
118+ return BuildSpan ( component , timeString ) ;
119+ }
109120
110- return $ "{ beginPadding } { timeString } { endPadding } ";
121+ internal static string BuildCategorySpan ( string category )
122+ {
123+ var component = new PerformanceFormatSpan ( )
124+ {
125+ Size = 13 ,
126+ BeginPadding = 1 ,
127+ EndPadding = 1
128+ } ;
129+
130+ return BuildSpan ( component , category ) ;
111131 }
112132
113- private string GetSource ( )
133+ internal static string BuildRepoSpan ( int repo )
114134 {
115- // Source column format is file:line
116- string source = $ "{ File } :{ Line } ";
117- if ( source . Length > SourceColumnMaxWidth )
135+ var component = new PerformanceFormatSpan ( )
118136 {
119- return TraceUtils . FormatSource ( source , SourceColumnMaxWidth ) ;
120- }
137+ Size = 5 ,
138+ BeginPadding = 1 ,
139+ EndPadding = 2
140+ } ;
121141
122- return source ;
142+ return BuildSpan ( component , $ "r { repo } " ) ;
123143 }
124144
125- private static void AdjustPadding ( PerformanceFormatSpan span , string data )
145+ private static string BuildSpan ( PerformanceFormatSpan component , string data )
126146 {
127- var paddingTotal = span . BeginPadding + span . EndPadding ;
128- // Size difference between the expected size and the actual size of the data
129- var sizeDifference = span . Size - paddingTotal - data . Length ;
147+ var paddingTotal = component . BeginPadding + component . EndPadding ;
148+ var dataLimit = component . Size - paddingTotal ;
149+ var sizeDifference = dataLimit - data . Length ;
130150
131- if ( sizeDifference < 0 )
151+ if ( sizeDifference <= 0 )
132152 {
133- // Remove all padding for values that take up the entire span
134- if ( Math . Abs ( sizeDifference ) == paddingTotal )
153+ if ( double . TryParse ( data , out _ ) )
135154 {
136- span . BeginPadding = 0 ;
137- span . EndPadding = 0 ;
155+ // Remove all padding for values that take up the entire span
156+ if ( Math . Abs ( sizeDifference ) == paddingTotal )
157+ {
158+ component . BeginPadding = 0 ;
159+ component . EndPadding = 0 ;
160+ }
161+ else
162+ {
163+ // Decrease BeginPadding for large time values that don't occupy entire span
164+ component . BeginPadding += sizeDifference ;
165+ }
138166 }
139167 else
140168 {
141- // Decrease BeginPadding for large time values that don't occupy entire span
142- span . BeginPadding += sizeDifference ;
169+ // Truncate value
170+ data = data . Substring ( 0 , dataLimit ) ;
143171 }
144172 }
173+
174+ if ( data . Length < dataLimit )
175+ {
176+ component . EndPadding += Math . Abs ( sizeDifference ) ;
177+ }
178+
179+ var beginPadding = new string ( ' ' , component . BeginPadding ) ;
180+ var endPadding = new string ( ' ' , component . EndPadding ) ;
181+
182+ return $ "{ beginPadding } { data } { endPadding } ";
145183 }
146184}
147185
0 commit comments