public IEnumerable <IDataItem> GetAll(IKey key) { List <DataBlockInfo> offsets = null; if (isSealed) { offsets = GetOffsetListFromHeader(key); } else if (GetHelper(key)) { offsets = index[key]; } else { return(null); } DataItems <KeyType, ValType> di = null; if (offsets != null) { di = new DataItems <KeyType, ValType>(offsets, this, key); } return(di); }
public IEnumerable <IDataItem> GetAllWithSkip(IKey key, long startTimeStamp, long endTimeStamp, long skip) { List <DataBlockInfo> allOffsets = null; if (isSealed) { allOffsets = GetOffsetListFromHeader(key); } else if (GetHelper(key)) { allOffsets = index[key]; } else { return(null); } DataItems <KeyType, ValType> di = null; if (allOffsets != null) { List <DataBlockInfo> requiredOffsets = new List <DataBlockInfo>(); foreach (DataBlockInfo datablockinfo in allOffsets) { if (datablockinfo.ts > endTimeStamp) { break; } else if (datablockinfo.ts >= startTimeStamp && datablockinfo.ts <= endTimeStamp && (datablockinfo.ts - startTimeStamp) % skip == 0) { requiredOffsets.Add(datablockinfo); } } di = new DataItems <KeyType, ValType>(requiredOffsets, this, key); } return(di); }
public IEnumerable <IDataItem> GetAll(IKey key, long startTimeStamp, long endTimeStamp) { if (logger != null) { logger.Log("Start ValueDataStream Get Offset"); } List <DataBlockInfo> allOffsets = null; if (isSealed) { allOffsets = GetOffsetListFromHeader(key); } else if (GetHelper(key)) { allOffsets = index[key]; } else { return(null); } DataItems <KeyType, ValType> di = null; if (allOffsets != null) { List <DataBlockInfo> offsets = new List <DataBlockInfo>(); int startTSIndex = allOffsets.BinarySearch(new DataBlockInfo(startTimeStamp, 0), new DataBlockInfoComparer()); int endTSIndex = allOffsets.BinarySearch(new DataBlockInfo(endTimeStamp, 0), new DataBlockInfoComparer()); if (startTSIndex < 0) { startTSIndex = ~startTSIndex; } if (endTSIndex < 0) { endTSIndex = ~endTSIndex - 1; } for (int i = startTSIndex; i <= endTSIndex; i++) { offsets.Add(allOffsets.ElementAt(i)); } /* * foreach (DataBlockInfo tso in allOffsets) * { * if (tso.Between(startTimeStamp, endTimeStamp)) * { * offsets.Add(tso); * } * } */ di = new DataItems <KeyType, ValType>(offsets, this, key); if (logger != null) { logger.Log("End ValueDataStream Get Offset"); } } return(di); }