default CompletableFuture<V> get(K pKey, K lKey) { RangeOption<K> option = opFactory().optionFactory().newRangeOption().build(); return get(pKey, lKey, option) .thenApply(result -> { try { if (result.count() == 0) { return null; } else { return retain(result.kvs().get(0).value()); } } finally { result.close(); } }) .whenComplete((value, cause) -> option.close()); }
@Override default CompletableFuture<KeyValue<K, V>> getKeyValue(K key) { RangeOp<K, V> op = newGet(key); return range(op).thenCompose(result -> { try { if (Code.OK == result.code()) { if (result.kvs().isEmpty()) { return FutureUtils.value(null); } List<KeyValue<K, V>> records = result.getKvsAndClear(); KeyValue<K, V> record = records.get(0); return FutureUtils.value(record); } else { return failWithCode(result.code(), "Failed to retrieve key " + key + " from store " + name()); } } finally { result.close(); } }); }
default CompletableFuture<KeyValue<K, V>> getKv(K pKey, K lKey) { return get(pKey, lKey, Options.get()) .thenApply(result -> { try { if (result.count() == 0) { return null; } else { return result.getKvsAndClear().get(0); } } finally { result.close(); } }); }
@Override default CompletableFuture<List<KeyValue<K, V>>> range(K key, K endKey) { RangeOp<K, V> op = newRange(key, endKey); return range(op).thenCompose(result -> { try { if (Code.OK == result.code()) { return FutureUtils.value(result.getKvsAndClear()); } else { return failWithCode(result.code(), "Failed to retrieve range [" + key + ", " + endKey + "] from store " + name()); } } finally { result.close(); } }); }
Long getNumber(K key) { try (RangeOp<K, V> op = opFactory.newRange( key, opFactory.optionFactory().newRangeOption() .limit(1) .build())) { try (RangeResult<K, V> result = range(op)) { if (Code.OK != result.code()) { throw new MVCCStoreException(result.code(), "Failed to retrieve key from store " + name + " : code = " + result.code()); } if (result.count() <= 0) { return null; } else { return result.kvs().get(0).numberValue(); } } } }
@Override default CompletableFuture<V> get(K key) { RangeOp<K, V> op = getOpFactory().newRange( key, Options.get()); return range(op).thenCompose(result -> { try { if (Code.OK == result.code()) { if (result.kvs().isEmpty()) { return FutureUtils.value(null); } else { return FutureUtils.value(retain(result.kvs().get(0).value())); } } else { return failWithCode(result.code(), "Failed to retrieve key " + key + " from store " + name()); } } finally { result.close(); } }); }
default CompletableFuture<List<KeyValue<K, V>>> range(K pKey, K lStartKey, K lEndKey) { RangeOption<K> option = opFactory().optionFactory().newRangeOption() .countOnly(false) .keysOnly(false) .limit(Long.MAX_VALUE) .endKey(lEndKey) .build(); return get(pKey, lStartKey, option) .thenApply(result -> { try { return result.getKvsAndClear(); } finally { result.close(); } }) .whenComplete((value, cause) -> option.close()); }
} else { RangeResult<K, V> rangeResult = (RangeResult<K, V>) result.results().get(0); if (rangeResult.kvs().isEmpty()) { return failWithCode(Code.UNEXPECTED, "Key " + k + " not found when putIfAbsent failed at store " + name()); } else { return FutureUtils.value(retain(rangeResult.kvs().get(0).value()));
default CompletableFuture<KeyValue<K, V>> getKv(K key) { return get(key, Options.get()) .thenApply(result -> { try { if (result.count() == 0) { return null; } else { return result.getKvsAndClear().get(0); } } finally { result.close(); } }); }
@Override public synchronized V get(K key) { try (RangeOp<K, V> op = opFactory.newRange( key, opFactory.optionFactory().newRangeOption() .limit(1) .build())) { try (RangeResult<K, V> result = range(op)) { if (Code.OK != result.code()) { throw new MVCCStoreException(result.code(), "Failed to retrieve key from store " + name + " : code = " + result.code()); } if (result.count() <= 0) { return null; } else { return retain(result.kvs().get(0).value()); } } } }
} else { RangeResult<K, V> rangeResult = (RangeResult<K, V>) result.results().get(0); if (rangeResult.kvs().isEmpty()) { return FutureUtils.exception( new KvApiException( "Key " + lKey + " not found when putIfAbsent failed")); } else { return FutureUtils.value(retain(rangeResult.kvs().get(0).value()));
default CompletableFuture<V> get(K key) { RangeOption<K> option = opFactory().optionFactory().newRangeOption().build(); return get(key, option) .thenApply(result -> { try { if (result.count() == 0) { return null; } else { return retain(result.kvs().get(0).value()); } } finally { result.close(); } }) .whenComplete((value, cause) -> option.close()); }
} else { RangeResult<K, V> rangeResult = (RangeResult<K, V>) result.results().get(0); if (rangeResult.kvs().isEmpty()) { return FutureUtils.exception( new KvApiException( "Key " + lKey + " not found when putIfAbsent failed")); } else { return FutureUtils.value(retain(rangeResult.kvs().get(0).value()));
default CompletableFuture<Long> getNumber(K pKey, K lKey) { RangeOption<K> option = opFactory().optionFactory().newRangeOption().build(); return get(pKey, lKey, option) .thenCompose(result -> { try { if (result.count() == 0) { return FutureUtils.value(null); } else { KeyValue<K, V> kv = result.kvs().get(0); if (kv.isNumber()) { return FutureUtils.value(kv.numberValue()); } else { return FutureUtils.exception(new KvApiException( Code.ILLEGAL_OP, "Key (" + pKey + ", " + lKey + ") doesn't have any number value")); } } } finally { result.close(); } }) .whenComplete((value, cause) -> option.close()); }
default CompletableFuture<Long> getNumber(K key) { RangeOption<K> option = opFactory().optionFactory().newRangeOption().build(); return get(key, option) .thenCompose(result -> { try { if (result.count() == 0) { return FutureUtils.value(null); } else { KeyValue<K, V> kv = result.kvs().get(0); if (kv.isNumber()) { return FutureUtils.value(kv.numberValue()); } else { return FutureUtils.exception(new KvApiException( Code.ILLEGAL_OP, "Key (" + key + ") doesn't have any number value")); } } } finally { result.close(); } }) .whenComplete((value, cause) -> option.close()); }