/** * Constructor * * @param vertexIdData vertexIdData */ public ByteStructVertexIdDataIterator( AbstractVertexIdData<I, T> vertexIdData) { super(vertexIdData.extendedDataOutput, vertexIdData.getConf()); this.vertexIdData = vertexIdData; }
@Override public int getSerializedSize() { return SIZE_OF_BYTE + SIZE_OF_INT + getSize(); }
@Override public void next() { if (vertexId == null) { vertexId = vertexIdData.getConf().createVertexId(); } if (data == null) { data = vertexIdData.createData(); } try { vertexId.readFields(extendedDataInput); int initial = extendedDataInput.getPos(); vertexIdData.readData(extendedDataInput, data); dataSize = extendedDataInput.getPos() - initial; } catch (IOException e) { throw new IllegalStateException("next: IOException", e); } }
@Override public void add(I vertexId, T data) { try { vertexId.write(extendedDataOutput); writeData(extendedDataOutput, data); } catch (IOException e) { throw new IllegalStateException("add: IOException", e); } }
@Override public void add(byte[] serializedId, int idPos, T data) { try { extendedDataOutput.write(serializedId, 0, idPos); writeData(extendedDataOutput, data); } catch (IOException e) { throw new IllegalStateException("add: IOException", e); } }
@Override public void initialize() { extendedDataOutput = getConf().createExtendedDataOutput(); }
@Override public void initialize(int expectedSize) { extendedDataOutput = getConf().createExtendedDataOutput(expectedSize); }
/** * Moves to the next element in the iteration. */ @Override public void next() { if (vertexId == null) { vertexId = vertexIdData.getConf().createVertexId(); } try { vertexId.readFields(extendedDataInput); messageBytes = extendedDataInput.readInt(); messageOffset = extendedDataInput.getPos(); if (extendedDataInput.skipBytes(messageBytes) != messageBytes) { throw new IllegalStateException("next: Failed to skip " + messageBytes); } } catch (IOException e) { throw new IllegalStateException("next: IOException", e); } } }