@Override
 public boolean nextFrame(ByteBuffer buffer) throws HyracksDataException {
   int index = channelReader.findNextSender();
   if (index >= 0) {
     IInputChannel[] channels = channelReader.getChannels();
     ByteBuffer srcFrame = channels[index].getNextBuffer();
     FrameUtils.copy(srcFrame, buffer);
     channels[index].recycleBuffer(srcFrame);
     return true;
   }
   return false;
 }
 @Override
 public synchronized void close() throws HyracksDataException {
   channelReader.close();
 }
 @Override
 public void open() throws HyracksDataException {
   channelReader.open();
 }