in tablestore/src/main/java/com/alicloud/openservices/tablestore/core/AsyncGetRangeCompletion.java [94:135]
void handleResult(GetRangeResponse result) {
if (result.getRows().size() > 0) {
List<Row> rows = result.getRows();
// Handle an existing incomplete row
if (lastRowPK != null) {
if (rows.get(0).getPrimaryKey().equals(lastRowPK)) {
mergeLastRow(rows.get(0), !lastRowPK.equals(result.getNextStartPrimaryKey()));
rows.remove(0);
} else {
mergeLastRow(null, true);
}
}
// When there are extra rows
if (rows.size() > 0) {
// Add a complete row
for (int i = 0; i < rows.size() - 1; i++) {
completeRows.add(rows.get(i));
}
// Process the last row
PrimaryKey resultLastRowPK = rows.get(rows.size() - 1).getPrimaryKey();
if (result.hasNextToken() && resultLastRowPK.equals(result.getNextStartPrimaryKey())) {
lastRowPK = resultLastRowPK;
if (lastRowColumns == null) {
lastRowColumns = new ArrayList<Column>();
}
lastRowColumns.addAll(Arrays.asList(rows.get(rows.size() - 1).getColumns()));
} else {
completeRows.add(rows.get(rows.size() - 1));
}
}
}
nextPrimaryKey = result.getNextStartPrimaryKey();
if (capacityUnit == null) {
capacityUnit = new CapacityUnit(0, 0);
}
if (requestIds == null) {
requestIds = new ArrayList<String>();
}
capacityUnit.setReadCapacityUnit(capacityUnit.getReadCapacityUnit() + result.getConsumedCapacity().getCapacityUnit().getReadCapacityUnit());
capacityUnit.setWriteCapacityUnit(capacityUnit.getWriteCapacityUnit() + result.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());
requestIds.add(result.getRequestId());
}