@Override public boolean nextFrame(IFrame frame) throws HyracksDataException { boolean status = reader.nextFrame(frame); if (status) { frameCounter.update(1); } return status; }
@Override public boolean nextFrame(IFrame outFrame) throws HyracksDataException { IFrameReader currentSender; while (!senders.isEmpty()) { // process the sender at the beginning of the sequence currentSender = senders.getFirst(); outFrame.reset(); if (currentSender.nextFrame(outFrame)) { return true; } else { // done with the current sender, close it, remove it from the Q and process the next one in sequence currentSender.close(); senders.removeFirst(); } } // done with all senders return false; }
private static boolean hasNextTuple(int runIndex, int[] tupleIndexes, List<? extends IFrameReader> runCursors, List<? extends IFrame> inFrames, IFrameTupleAccessor[] tupleAccessors) throws HyracksDataException { if (tupleAccessors[runIndex] == null || runCursors.get(runIndex) == null) { return false; } else if (tupleIndexes[runIndex] >= tupleAccessors[runIndex].getTupleCount()) { IFrame frame = inFrames.get(runIndex); if (runCursors.get(runIndex).nextFrame(frame)) { tupleIndexes[runIndex] = 0; tupleAccessors[runIndex].reset(frame.getBuffer()); return hasNextTuple(runIndex, tupleIndexes, runCursors, inFrames, tupleAccessors); } else { return false; } } else { return true; } }
@Override public void open() throws HyracksDataException { tupleCount = 0; tupleAccessors = new IFrameTupleAccessor[runCursors.size()]; outFrameAppender = new FrameTupleAppender(); Comparator<ReferenceEntry> comparator = createEntryComparator(comparators); topTuples = new ReferencedPriorityQueue(runCursors.size(), comparator, sortFields, nmkComputer); tupleIndexes = new int[runCursors.size()]; for (int i = 0; i < runCursors.size(); i++) { tupleIndexes[i] = 0; int runIndex = topTuples.peek().getRunid(); runCursors.get(runIndex).open(); if (runCursors.get(runIndex).nextFrame(inFrames.get(runIndex))) { tupleAccessors[runIndex] = new GroupFrameAccessor(ctx.getInitialFrameSize(), recordDesc); tupleAccessors[runIndex].reset(inFrames.get(runIndex).getBuffer()); setNextTopTuple(runIndex, tupleIndexes, runCursors, inFrames, tupleAccessors, topTuples); } else { closeRun(runIndex, runCursors, tupleAccessors); topTuples.pop(); } } }
@Override public Object[] readData() throws HyracksDataException { while (true) { if (eos) { return null; } if (!first && !frameDeserializer.done()) { return frameDeserializer.deserializeRecord(); } frame.reset(); if (!frameReader.nextFrame(frame)) { eos = true; } else { frameDeserializer.reset(frame.getBuffer()); } first = false; } } }
writer.open(); VSizeFrame frame = new VSizeFrame(this); while (reader.nextFrame(frame)) { if (aborted) { return;