if (resultCode != 0) {
if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) {
return false;
}
throw new AerospikeException(resultCode);
}
byte info3 = dataBuffer[3];
// If this is the end marker of the response, do not proceed further
if ((info3 & Command.INFO3_LAST) == Command.INFO3_LAST) {
return false;
}
int fieldCount = Buffer.bytesToShort(dataBuffer, 18);
int opCount = Buffer.bytesToShort(dataBuffer, 20);
parseKey(fieldCount);
if (opCount != 1) {
throw new AerospikeException("Query aggregate expected exactly one bin. Received " + opCount);
}
// Parse aggregateValue.
readBytes(8);
int opSize = Buffer.bytesToInt(dataBuffer, 0);
byte particleType = dataBuffer[5];
byte nameSize = dataBuffer[7];
readBytes(nameSize);
String name = Buffer.utf8ToString(dataBuffer, 0, nameSize);
int particleBytesSize = (int) (opSize - (4 + nameSize));
readBytes(particleBytesSize);
if (! name.equals("SUCCESS")) {
if (name.equals("FAILURE")) {
Object value = Buffer.bytesToParticle(particleType, dataBuffer, 0, particleBytesSize);
throw new AerospikeException(ResultCode.QUERY_GENERIC, value.toString());
}
else {
throw new AerospikeException(ResultCode.QUERY_GENERIC, "Query aggregate expected bin name SUCCESS. Received " + name);
}
}
LuaValue aggregateValue = instance.getLuaValue(particleType, dataBuffer, 0, particleBytesSize);