@@ -110,24 +110,54 @@ private static IReadOnlyList<TimeSeriesRule> ParseRuleArray(RedisResult result)
110110
111111 private static TimeSeriesInformation ParseInfo ( RedisResult result )
112112 {
113+ long totalSamples = - 1 , memoryUsage = - 1 , retentionTime = - 1 , chunkSize = - 1 , chunkCount = - 1 ;
114+ TimeStamp firstTimestamp = null , lastTimestamp = null ;
115+ IReadOnlyList < TimeSeriesLabel > labels = null ;
116+ IReadOnlyList < TimeSeriesRule > rules = null ;
117+ string sourceKey = null ;
113118 RedisResult [ ] redisResults = ( RedisResult [ ] ) result ;
114- long totalSamples = ( long ) redisResults [ 1 ] ;
115- long memoryUsage = ( long ) redisResults [ 3 ] ;
116- TimeStamp firstTimeStamp = ParseTimeStamp ( redisResults [ 5 ] ) ;
117- TimeStamp lastTimeStamp = ParseTimeStamp ( redisResults [ 7 ] ) ;
118- long retentionTime = ( long ) redisResults [ 9 ] ;
119- long chunkCount = ( long ) redisResults [ 11 ] ;
120- string chunkSizeProperty = ( string ) redisResults [ 12 ] ;
121- long chunkSize = ( long ) redisResults [ 13 ] ;
122- // If the property name is maxSamplesPerChunk then this is an old version of RedisTimeSeries and we used the number of samples before ( now Bytes )
123- if ( string . Equals ( chunkSizeProperty , "maxSamplesPerChunk" ) )
124- {
125- chunkSize = chunkSize * 16 ;
119+ for ( int i = 0 ; i < redisResults . Length ; ++ i ) {
120+ string label = ( string ) redisResults [ i ++ ] ;
121+ switch ( label ) {
122+ case "totalSamples" :
123+ totalSamples = ( long ) redisResults [ i ] ;
124+ break ;
125+ case "memoryUsage" :
126+ memoryUsage = ( long ) redisResults [ i ] ;
127+ break ;
128+ case "retentionTime" :
129+ retentionTime = ( long ) redisResults [ i ] ;
130+ break ;
131+ case "chunkCount" :
132+ chunkCount = ( long ) redisResults [ i ] ;
133+ break ;
134+ case "chunkSize" :
135+ chunkSize = ( long ) redisResults [ i ] ;
136+ break ;
137+ case "maxSamplesPerChunk" :
138+ // If the property name is maxSamplesPerChunk then this is an old
139+ // version of RedisTimeSeries and we used the number of samples before ( now Bytes )
140+ chunkSize = chunkSize * 16 ;
141+ break ;
142+ case "firstTimestamp" :
143+ firstTimestamp = ParseTimeStamp ( redisResults [ i ] ) ;
144+ break ;
145+ case "lastTimestamp" :
146+ lastTimestamp = ParseTimeStamp ( redisResults [ i ] ) ;
147+ break ;
148+ case "labels" :
149+ labels = ParseLabelArray ( redisResults [ i ] ) ;
150+ break ;
151+ case "sourceKey" :
152+ sourceKey = ( string ) redisResults [ i ] ;
153+ break ;
154+ case "rules" :
155+ rules = ParseRuleArray ( redisResults [ i ] ) ;
156+ break ;
157+ }
126158 }
127- IReadOnlyList < TimeSeriesLabel > labels = ParseLabelArray ( redisResults [ 15 ] ) ;
128- string destKey = ( string ) redisResults [ 17 ] ;
129- IReadOnlyList < TimeSeriesRule > rules = ParseRuleArray ( redisResults [ 19 ] ) ;
130- return new TimeSeriesInformation ( totalSamples , memoryUsage , firstTimeStamp , lastTimeStamp , retentionTime , chunkCount , chunkSize , labels , destKey , rules ) ;
159+ return new TimeSeriesInformation ( totalSamples , memoryUsage , firstTimestamp ,
160+ lastTimestamp , retentionTime , chunkCount , chunkSize , labels , sourceKey , rules ) ;
131161 }
132162
133163 private static IReadOnlyList < string > ParseStringArray ( RedisResult result )
@@ -139,4 +169,4 @@ private static IReadOnlyList<string> ParseStringArray(RedisResult result)
139169 return list ;
140170 }
141171 }
142- }
172+ }
0 commit comments