@SuppressWarnings("unchecked") @Override public KeyRecord next() { KeyRecord keyRecord = null; if (this.recordSetIterator != null) { keyRecord = this.recordSetIterator.next(); } else if (this.resultSetIterator != null) { Map<String, Object> map = (Map<String, Object>) this.resultSetIterator.next(); Map<String, Object> meta = (Map<String, Object>) map.get(META_DATA); map.remove(META_DATA); Map<String, Object> binMap = new HashMap<String, Object>(map); if (log.isDebugEnabled()) { for (Map.Entry<String, Object> entry : map.entrySet()) { log.debug(entry.getKey() + " = " + entry.getValue()); } } Long generation = (Long) meta.get(GENERATION); Long ttl = (Long) meta.get(EXPIRY); Record record = new Record(binMap, generation.intValue(), ttl.intValue()); Key key = new Key(namespace, (byte[]) meta.get(DIGEST), (String) meta.get(SET_NAME), null); keyRecord = new KeyRecord(key, record); } else if (singleRecord != null) { keyRecord = singleRecord; singleRecord = null; } return keyRecord; }
@Override public Record get(Policy policy, Key key) throws AerospikeException { policy = (policy == null) ? readPolicyDefault : policy; String nsName = key.namespace == null ? defaultNamespace : key.namespace; String setName = key.setName == null ? defaultNamespace : key.setName; Map<String, Map<Key, Rec>> namespace = getNamespace(nsName); Map<Key, Rec> set = getSet(setName, namespace); Rec existingRec = set.get(key); if (existingRec == null) { return null; } return new Record(existingRec.getBins(), existingRec.generation, existingRec.expires); }
protected final Record parseRecord() { Map<String,Object> bins = null; for (int i = 0 ; i < opCount; i++) { int opSize = Buffer.bytesToInt(dataBuffer, dataOffset); byte particleType = dataBuffer[dataOffset+5]; byte nameSize = dataBuffer[dataOffset+7]; String name = Buffer.utf8ToString(dataBuffer, dataOffset+8, nameSize); dataOffset += 4 + 4 + nameSize; int particleBytesSize = (int) (opSize - (4 + nameSize)); Object value = Buffer.bytesToParticle(particleType, dataBuffer, dataOffset, particleBytesSize); dataOffset += particleBytesSize; if (bins == null) { bins = new HashMap<String,Object>(); } bins.put(name, value); } return new Record(bins, generation, expiration); }
protected final Record parseRecord() { Map<String,Object> bins = null; for (int i = 0 ; i < opCount; i++) { int opSize = Buffer.bytesToInt(dataBuffer, dataOffset); byte particleType = dataBuffer[dataOffset+5]; byte nameSize = dataBuffer[dataOffset+7]; String name = Buffer.utf8ToString(dataBuffer, dataOffset+8, nameSize); dataOffset += 4 + 4 + nameSize; int particleBytesSize = (int) (opSize - (4 + nameSize)); Object value = Buffer.bytesToParticle(particleType, dataBuffer, dataOffset, particleBytesSize); dataOffset += particleBytesSize; if (bins == null) { bins = new HashMap<String,Object>(); } bins.put(name, value); } return new Record(bins, generation, expiration); }
@Override protected void parseResult(Connection conn) throws IOException { // Read header. conn.readFully(dataBuffer, Command.MSG_TOTAL_HEADER_SIZE, Command.STATE_READ_HEADER); int resultCode = dataBuffer[13] & 0xFF; if (resultCode == 0) { int generation = Buffer.bytesToInt(dataBuffer, 14); int expiration = Buffer.bytesToInt(dataBuffer, 18); record = new Record(null, generation, expiration); } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { record = null; } else { throw new AerospikeException(resultCode); } } }
/** * Parses the given byte buffer and populate the result object. * Returns the number of bytes that were parsed from the given buffer. */ protected final Record parseRecord() throws AerospikeException, IOException { Map<String,Object> bins = null; for (int i = 0 ; i < opCount; i++) { 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 = opSize - (4 + nameSize); readBytes(particleBytesSize); Object value = Buffer.bytesToParticle(particleType, dataBuffer, 0, particleBytesSize); if (bins == null) { bins = new HashMap<String,Object>(); } bins.put(name, value); } return new Record(bins, generation, expiration); }
/** * Parses the given byte buffer and populate the result object. * Returns the number of bytes that were parsed from the given buffer. */ protected final Record parseRecord() throws AerospikeException, IOException { Map<String,Object> bins = null; for (int i = 0 ; i < opCount; i++) { 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 = opSize - (4 + nameSize); readBytes(particleBytesSize); Object value = Buffer.bytesToParticle(particleType, dataBuffer, 0, particleBytesSize); if (bins == null) { bins = new HashMap<String,Object>(); } bins.put(name, value); } return new Record(bins, generation, expiration); }
@Override protected boolean parseResult() { validateHeaderSize(); int resultCode = dataBuffer[5] & 0xFF; if (resultCode == 0) { int generation = Buffer.bytesToInt(dataBuffer, 6); int expiration = Buffer.bytesToInt(dataBuffer, 10); record = new Record(null, generation, expiration); } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { record = null; } else { throw new AerospikeException(resultCode); } } return true; }
@Override protected void parseResult(Connection conn) throws IOException { // Read header. conn.readFully(dataBuffer, Command.MSG_TOTAL_HEADER_SIZE, Command.STATE_READ_HEADER); int resultCode = dataBuffer[13] & 0xFF; if (resultCode == 0) { int generation = Buffer.bytesToInt(dataBuffer, 14); int expiration = Buffer.bytesToInt(dataBuffer, 18); record = new Record(null, generation, expiration); } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { record = null; } else { throw new AerospikeException(resultCode); } } }
@Override protected boolean parseResult() { validateHeaderSize(); int resultCode = dataBuffer[5] & 0xFF; if (resultCode == 0) { int generation = Buffer.bytesToInt(dataBuffer, 6); int expiration = Buffer.bytesToInt(dataBuffer, 10); record = new Record(null, generation, expiration); } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { record = null; } else { throw new AerospikeException(resultCode); } } return true; }
private final Record parseRecord( int opCount, int fieldCount, int generation, int expiration ) throws AerospikeException { Map<String,Object> bins = new HashMap<String,Object>(); int receiveOffset = 0; // There can be fields in the response (setname etc). // But for now, ignore them. Expose them to the API if needed in the future. if (fieldCount > 0) { // Just skip over all the fields for (int i = 0; i < fieldCount; i++) { int fieldSize = Buffer.bytesToInt(dataBuffer, receiveOffset); receiveOffset += 4 + fieldSize; } } for (int i = 0 ; i < opCount; i++) { int opSize = Buffer.bytesToInt(dataBuffer, receiveOffset); byte particleType = dataBuffer[receiveOffset+5]; byte nameSize = dataBuffer[receiveOffset+7]; String name = Buffer.utf8ToString(dataBuffer, receiveOffset+8, nameSize); receiveOffset += 4 + 4 + nameSize; int particleBytesSize = opSize - (4 + nameSize); Object value = Buffer.bytesToParticle(particleType, dataBuffer, receiveOffset, particleBytesSize); receiveOffset += particleBytesSize; addBin(bins, name, value); } return new Record(bins, generation, expiration); }
return new Record(bins, generation, expiration);
private final Record parseRecord( int opCount, int fieldCount, int generation, int expiration ) throws AerospikeException { Map<String,Object> bins = new HashMap<String,Object>(); int receiveOffset = 0; // There can be fields in the response (setname etc). // But for now, ignore them. Expose them to the API if needed in the future. if (fieldCount > 0) { // Just skip over all the fields for (int i = 0; i < fieldCount; i++) { int fieldSize = Buffer.bytesToInt(dataBuffer, receiveOffset); receiveOffset += 4 + fieldSize; } } for (int i = 0 ; i < opCount; i++) { int opSize = Buffer.bytesToInt(dataBuffer, receiveOffset); byte particleType = dataBuffer[receiveOffset+5]; byte nameSize = dataBuffer[receiveOffset+7]; String name = Buffer.utf8ToString(dataBuffer, receiveOffset+8, nameSize); receiveOffset += 4 + 4 + nameSize; int particleBytesSize = opSize - (4 + nameSize); Object value = Buffer.bytesToParticle(particleType, dataBuffer, receiveOffset, particleBytesSize); receiveOffset += particleBytesSize; addBin(bins, name, value); } return new Record(bins, generation, expiration); }
return new Record(bins, generation, expiration);
@Override protected final boolean parseResult() { validateHeaderSize(); int resultCode = dataBuffer[5] & 0xFF; int generation = Buffer.bytesToInt(dataBuffer, 6); int expiration = Buffer.bytesToInt(dataBuffer, 10); int fieldCount = Buffer.bytesToShort(dataBuffer, 18); int opCount = Buffer.bytesToShort(dataBuffer, 20); dataOffset = Command.MSG_REMAINING_HEADER_SIZE; if (resultCode == 0) { if (opCount == 0) { // Bin data was not returned. record = new Record(null, generation, expiration); } else { record = parseRecord(opCount, fieldCount, generation, expiration); } } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { handleNotFound(resultCode); } else { throw new AerospikeException(resultCode); } } return true; }
@Override protected final boolean parseResult() { validateHeaderSize(); int resultCode = dataBuffer[5] & 0xFF; int generation = Buffer.bytesToInt(dataBuffer, 6); int expiration = Buffer.bytesToInt(dataBuffer, 10); int fieldCount = Buffer.bytesToShort(dataBuffer, 18); int opCount = Buffer.bytesToShort(dataBuffer, 20); dataOffset = Command.MSG_REMAINING_HEADER_SIZE; if (resultCode == 0) { if (opCount == 0) { // Bin data was not returned. record = new Record(null, generation, expiration); } else { record = parseRecord(opCount, fieldCount, generation, expiration); } } else { if (resultCode == ResultCode.KEY_NOT_FOUND_ERROR) { handleNotFound(resultCode); } else { throw new AerospikeException(resultCode); } } return true; }
record = new Record(null, generation, expiration); return;
record = new Record(null, generation, expiration); return;