public static ReadRecordsResponse createReadRecordsResponse()

in tablestore/src/main/java/com/alicloud/openservices/tablestore/core/protocol/ResponseFactory.java [991:1040]


    public static ReadRecordsResponse createReadRecordsResponse(
        ResponseContentWithMeta response, TunnelServiceApi.ReadRecordsResponse tunnelResponse) {
        ReadRecordsResponse resp = new ReadRecordsResponse(response.getMeta());
        resp.setMemoizedSerializedSize(tunnelResponse.getSerializedSize());
        if (tunnelResponse.hasNextToken()) {
            if (FINISH_TAG.equals(tunnelResponse.getNextToken())) {
                resp.setNextToken(null);
            } else {
                resp.setNextToken(tunnelResponse.getNextToken());
            }
        }

        if (tunnelResponse.hasMayMoreRecord()) {
            resp.setMayMoreRecord(tunnelResponse.getMayMoreRecord());
        }

        List<StreamRecord> records = new ArrayList<StreamRecord>();

        for (TunnelServiceApi.Record record : tunnelResponse.getRecordsList()) {
            try {
                PlainBufferCodedInputStream inputStream = new PlainBufferCodedInputStream(
                    new PlainBufferInputStream(record.getRecord().asReadOnlyByteBuffer())
                );
                List<PlainBufferRow> rows = inputStream.readRowsWithHeader();
                if (rows.size() != 1) {
                    throw new IOException("Expect only returns one row, Row count: " + rows.size());
                }
                PlainBufferRow row = rows.get(0);

                if (record.hasOriginRecord()) {
                    PlainBufferCodedInputStream inputOriginStream = new PlainBufferCodedInputStream(
                            new PlainBufferInputStream(record.getOriginRecord().asReadOnlyByteBuffer())
                    );
                    List<PlainBufferRow> originRows = inputOriginStream.readRowsWithoutPk();
                    if (originRows.size() != 1) {
                        throw new IOException("Expect only returns one row, Row count: " + rows.size());
                    }
                    PlainBufferRow originRow = originRows.get(0);
                    records.add(PlainBufferConversion.toStreamRecord(row, originRow, record.getActionType(), false));
                } else {
                    records.add(PlainBufferConversion.toStreamRecord(row, null, record.getActionType(), false));
                }
            } catch (Exception e) {
                throw new ClientException("Failed to parse row", e);
            }
        }

        resp.setRecords(records);
        return resp;
    }