/// <summary> /// /// </summary> /// <param name="rowIndex"></param> /// <returns></returns> public FetchPoint GetRow(int rowIndex) { int numCols = ColumnCount; FetchPoint point = new FetchPoint(timestamps[rowIndex], ColumnCount); for (int dsIndex = 0; dsIndex < numCols; dsIndex++) { point.SetValue(dsIndex, values[dsIndex][rowIndex]); } return(point); }
internal FetchPoint[] Fetch(FetchRequest request) { if (request.Filter != null) { throw new RrdException("Fetch() method does not support filtered datasources." + " Use fetchData() to get filtered fetch data."); } long arcStep = ArcStep; long fetchStart = Util.Normalize(request.FetchStart, arcStep); long fetchEnd = Util.Normalize(request.FetchEnd, arcStep); if (fetchEnd < request.FetchEnd) { fetchEnd += arcStep; } long startTime = StartTime; long endTime = EndTime; int dsCount = robins.Length; int ptsCount = (int)((fetchEnd - fetchStart) / arcStep + 1); FetchPoint[] points = new FetchPoint[ptsCount]; for (int i = 0; i < ptsCount; i++) { long time = fetchStart + i * arcStep; FetchPoint point = new FetchPoint(time, dsCount); if (time >= startTime && time <= endTime) { int robinIndex = (int)((time - startTime) / arcStep); for (int j = 0; j < dsCount; j++) { point.SetValue(j, robins[j].GetValue(robinIndex)); } } points[i] = point; } return(points); }