/*********************** construct ******************************/ // pass in blockMeta so we can initialize buffers big enough for all cells in the block public PrefixTreeArrayScanner(PrefixTreeBlockMeta blockMeta, int rowTreeDepth, int rowBufferLength, int qualifierBufferLength, int tagsBufferLength) { this.rowNodes = new RowNodeReader[rowTreeDepth]; for (int i = 0; i < rowNodes.length; ++i) { rowNodes[i] = new RowNodeReader(); } this.rowBuffer = new byte[rowBufferLength]; this.familyBuffer = new byte[PrefixTreeBlockMeta.MAX_FAMILY_LENGTH]; this.familyReader = new ColumnReader(familyBuffer, ColumnNodeType.FAMILY); this.qualifierBuffer = new byte[qualifierBufferLength]; this.tagsBuffer = new byte[tagsBufferLength]; this.qualifierReader = new ColumnReader(qualifierBuffer, ColumnNodeType.QUALIFIER); this.tagsReader = new ColumnReader(tagsBuffer, ColumnNodeType.TAGS); this.timestampDecoder = new TimestampDecoder(); this.mvccVersionDecoder = new MvccVersionDecoder(); }
/** * @param forwards which marker to set if we overflow */ protected void discardCurrentRowNode(boolean forwards) { RowNodeReader rowNodeBeingPopped = currentRowNode; --rowNodeStackIndex;// pop it off the stack if (rowNodeStackIndex < 0) { currentRowNode = null; if (forwards) { markAfterLast(); } else { markBeforeFirst(); } return; } popFromRowBuffer(rowNodeBeingPopped); currentRowNode = rowNodes[rowNodeStackIndex]; }
/*********************** construct ******************************/ // pass in blockMeta so we can initialize buffers big enough for all cells in the block public PrefixTreeArrayScanner(PrefixTreeBlockMeta blockMeta, int rowTreeDepth, int rowBufferLength, int qualifierBufferLength) { this.rowNodes = new RowNodeReader[rowTreeDepth]; for (int i = 0; i < rowNodes.length; ++i) { rowNodes[i] = new RowNodeReader(); } this.rowBuffer = new byte[rowBufferLength]; this.familyBuffer = new byte[PrefixTreeBlockMeta.MAX_FAMILY_LENGTH]; this.familyReader = new ColumnReader(familyBuffer, true); this.qualifierBuffer = new byte[qualifierBufferLength]; this.qualifierReader = new ColumnReader(qualifierBuffer, false); this.timestampDecoder = new TimestampDecoder(); this.mvccVersionDecoder = new MvccVersionDecoder(); }
protected void popFromRowBuffer(RowNodeReader rowNodeBeingPopped) { rowLength -= rowNodeBeingPopped.getTokenLength(); --rowLength; // pop the parent's fan byte }