diff --git a/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java b/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java index f6868c6ac..1f1f4d658 100644 --- a/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java +++ b/src/main/java/net/spy/memcached/v2/AsyncArcusCommands.java @@ -129,14 +129,17 @@ public AsyncArcusCommands(Supplier arcusClientSupplier) { this.arcusClientSupplier = arcusClientSupplier; } + @Override public ArcusFuture set(String key, int exp, T value) { return store(StoreType.set, key, exp, value); } + @Override public ArcusFuture add(String key, int exp, T value) { return store(StoreType.add, key, exp, value); } + @Override public ArcusFuture replace(String key, int exp, T value) { return store(StoreType.replace, key, exp, value); } @@ -181,14 +184,17 @@ public void complete() { return future; } + @Override public ArcusFuture> multiSet(Map items, int exp) { return multiStore(StoreType.set, items, exp); } + @Override public ArcusFuture> multiAdd(Map items, int exp) { return multiStore(StoreType.add, items, exp); } + @Override public ArcusFuture> multiReplace(Map items, int exp) { return multiStore(StoreType.replace, items, exp); } @@ -216,10 +222,12 @@ private ArcusFuture> multiStore(StoreType type, }); } + @Override public ArcusFuture prepend(String key, T value) { return concat(ConcatenationType.prepend, key, value); } + @Override public ArcusFuture append(String key, T value) { return concat(ConcatenationType.append, key, value); } @@ -263,6 +271,7 @@ public void complete() { return future; } + @Override public ArcusFuture cas(String key, int exp, T value, long casId) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -304,10 +313,12 @@ public void complete() { return future; } + @Override public ArcusFuture incr(String key, int delta) { return mutate(Mutator.incr, key, delta, -1L, 0); } + @Override public ArcusFuture incr(String key, int delta, long initial, int exp) { if (initial < 0) { throw new IllegalArgumentException("Initial value must be 0 or greater."); @@ -315,10 +326,12 @@ public ArcusFuture incr(String key, int delta, long initial, int exp) { return mutate(Mutator.incr, key, delta, initial, exp); } + @Override public ArcusFuture decr(String key, int delta) { return mutate(Mutator.decr, key, delta, -1L, 0); } + @Override public ArcusFuture decr(String key, int delta, long initial, int exp) { if (initial < 0) { throw new IllegalArgumentException("Initial value must be 0 or greater."); @@ -368,6 +381,7 @@ public void complete() { return future; } + @Override public ArcusFuture get(String key) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result, @@ -409,6 +423,7 @@ public void complete() { return future; } + @Override public ArcusFuture> gets(String key) { AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>()); @@ -452,6 +467,7 @@ public void complete() { return future; } + @Override public ArcusFuture> multiGet(List keys) { keyValidator.validateKey(keys); keyValidator.checkDupKey(keys); @@ -542,6 +558,7 @@ public void complete() { return future; } + @Override public ArcusFuture>> multiGets(List keys) { keyValidator.validateKey(keys); keyValidator.checkDupKey(keys); @@ -629,6 +646,7 @@ public void complete() { return future; } + @Override public ArcusFuture delete(String key) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -667,6 +685,7 @@ public void complete() { return future; } + @Override public ArcusFuture> multiDelete(List keys) { keyValidator.checkDupKey(keys); @@ -690,6 +709,7 @@ public ArcusFuture> multiDelete(List keys) { }); } + @Override public ArcusFuture lopCreate(String key, ElementValueType type, CollectionAttributes attributes) { if (attributes == null) { @@ -702,16 +722,19 @@ public ArcusFuture lopCreate(String key, ElementValueType type, return collectionCreate(key, create); } + @Override public ArcusFuture lopInsert(String key, int index, T value) { return lopInsert(key, index, value, null); } + @Override public ArcusFuture lopInsert(String key, int index, T value, CollectionAttributes attributes) { ListInsert insert = new ListInsert<>(value, null, attributes); return collectionInsert(key, String.valueOf(index), insert); } + @Override public ArcusFuture lopGet(String key, int index, GetArgs args) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -757,6 +780,7 @@ public void gotData(String subKey, int flags, byte[] data, byte[] eFlag) { return future; } + @Override public ArcusFuture> lopGet(String key, int from, int to, GetArgs args) { AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>(new ArrayList<>())); @@ -803,16 +827,19 @@ public void gotData(String subKey, int flags, byte[] data, byte[] eFlag) { return future; } + @Override public ArcusFuture lopDelete(String key, int index, boolean dropIfEmpty) { ListDelete delete = new ListDelete(index, dropIfEmpty, false); return collectionDelete(key, delete); } + @Override public ArcusFuture lopDelete(String key, int from, int to, boolean dropIfEmpty) { ListDelete delete = new ListDelete(from, to, dropIfEmpty, false); return collectionDelete(key, delete); } + @Override public ArcusFuture sopCreate(String key, ElementValueType type, CollectionAttributes attributes) { if (attributes == null) { @@ -825,15 +852,18 @@ public ArcusFuture sopCreate(String key, ElementValueType type, return collectionCreate(key, create); } + @Override public ArcusFuture sopInsert(String key, T value) { return sopInsert(key, value, null); } + @Override public ArcusFuture sopInsert(String key, T value, CollectionAttributes attributes) { SetInsert insert = new SetInsert<>(value, null, attributes); return collectionInsert(key, "", insert); } + @Override public ArcusFuture> sopGet(String key, int count, GetArgs args) { AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>(new HashSet<>())); @@ -880,6 +910,7 @@ public void complete() { return future; } + @Override public ArcusFuture sopExist(String key, T value) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -922,11 +953,13 @@ public void complete() { return future; } + @Override public ArcusFuture sopDelete(String key, T value, boolean dropIfEmpty) { SetDelete delete = new SetDelete<>(value, dropIfEmpty, false, tcForCollection); return collectionDelete(key, delete); } + @Override public ArcusFuture mopCreate(String key, ElementValueType type, CollectionAttributes attributes) { if (attributes == null) { @@ -939,10 +972,12 @@ public ArcusFuture mopCreate(String key, ElementValueType type, return collectionCreate(key, create); } + @Override public ArcusFuture mopInsert(String key, String mKey, T value) { return mopInsert(key, mKey, value, null); } + @Override public ArcusFuture mopInsert(String key, String mKey, T value, CollectionAttributes attributes) { keyValidator.validateMKey(mKey); @@ -951,10 +986,12 @@ public ArcusFuture mopInsert(String key, String mKey, T value, return collectionInsert(key, mKey, insert); } + @Override public ArcusFuture mopUpsert(String key, String mKey, T value) { return mopUpsert(key, mKey, value, null); } + @Override public ArcusFuture mopUpsert(String key, String mKey, T value, CollectionAttributes attributes) { keyValidator.validateMKey(mKey); @@ -963,6 +1000,7 @@ public ArcusFuture mopUpsert(String key, String mKey, T value, return collectionInsert(key, mKey, upsert); } + @Override public ArcusFuture mopUpdate(String key, String mKey, T value) { keyValidator.validateMKey(mKey); @@ -970,10 +1008,12 @@ public ArcusFuture mopUpdate(String key, String mKey, T value) { return collectionUpdate(key, mKey, update); } + @Override public ArcusFuture> mopGet(String key, GetArgs args) { return mopGet(key, new ArrayList<>(), args); } + @Override public ArcusFuture mopGet(String key, String mKey, GetArgs args) { keyValidator.validateMKey(mKey); @@ -1022,6 +1062,7 @@ public void complete() { return future; } + @Override public ArcusFuture> mopGet(String key, List mKeys, GetArgs args) { if (mKeys == null) { throw new IllegalArgumentException("mKeys cannot be null"); @@ -1076,14 +1117,17 @@ public void complete() { return future; } + @Override public ArcusFuture mopDelete(String key, boolean dropIfEmpty) { return mopDelete(key, new ArrayList<>(), dropIfEmpty); } + @Override public ArcusFuture mopDelete(String key, String mKey, boolean dropIfEmpty) { return mopDelete(key, Collections.singletonList(mKey), dropIfEmpty); } + @Override public ArcusFuture mopDelete(String key, List mKeys, boolean dropIfEmpty) { if (mKeys == null) { throw new IllegalArgumentException("mKeys cannot be null"); @@ -1097,6 +1141,7 @@ public ArcusFuture mopDelete(String key, List mKeys, boolean dr return collectionDelete(key, delete); } + @Override public ArcusFuture bopCreate(String key, ElementValueType type, CollectionAttributes attributes) { if (attributes == null) { @@ -1110,10 +1155,12 @@ public ArcusFuture bopCreate(String key, ElementValueType type, return collectionCreate(key, create); } + @Override public ArcusFuture bopInsert(String key, BTreeElement element) { return bopInsert(key, element, null); } + @Override public ArcusFuture bopInsert(String key, BTreeElement element, CollectionAttributes attributes) { BTreeInsert insert = new BTreeInsert<>(element.getValue(), element.getEFlag(), @@ -1121,11 +1168,13 @@ public ArcusFuture bopInsert(String key, BTreeElement element, return collectionInsert(key, element.getBKey().toString(), insert); } + @Override public ArcusFuture>> bopInsertAndGetTrimmed( String key, BTreeElement element) { return bopInsertOrUpsertAndGetTrimmed(key, element, false, null); } + @Override public ArcusFuture>> bopInsertAndGetTrimmed( String key, BTreeElement element, CollectionAttributes attributes) { return bopInsertOrUpsertAndGetTrimmed(key, element, false, attributes); @@ -1144,11 +1193,13 @@ public ArcusFuture bopUpsert(String key, BTreeElement element, return collectionInsert(key, element.getBKey().toString(), upsert); } + @Override public ArcusFuture>> bopUpsertAndGetTrimmed( String key, BTreeElement element) { return bopInsertOrUpsertAndGetTrimmed(key, element, true, null); } + @Override public ArcusFuture>> bopUpsertAndGetTrimmed( String key, BTreeElement element, CollectionAttributes attributes) { return bopInsertOrUpsertAndGetTrimmed(key, element, true, attributes); @@ -1167,6 +1218,7 @@ private ArcusFutureImpl>> bopInsertOrUpsertAn BTreeInsertAndGetOperation.Callback cb = new BTreeInsertAndGetOperation.Callback() { private BTreeElement trimmedElement = null; + @Override public void receivedStatus(OperationStatus status) { switch (status.getStatusCode()) { case SUCCESS: @@ -1191,6 +1243,7 @@ public void receivedStatus(OperationStatus status) { } } + @Override public void complete() { future.complete(); } @@ -1222,31 +1275,37 @@ private static BTreeInsertAndGet createBTreeInsertAndGet(BTreeElement element.getEFlag(), element.getValue(), isUpsert, attributes); } + @Override public ArcusFuture bopUpdate(String key, BTreeUpdateElement element) { BTreeUpdate update = new BTreeUpdate<>(element.getValue(), element.getEFlagUpdate(), false); return collectionUpdate(key, element.getBKey().toString(), update); } + @Override public ArcusFuture bopIncr(String key, BKey bKey, int delta) { CollectionMutate mutate = new BTreeMutate(Mutator.incr, delta); return collectionMutate(key, bKey.toString(), mutate); } + @Override public ArcusFuture bopIncr(String key, BKey bKey, int delta, long initial, byte[] eFlag) { CollectionMutate mutate = new BTreeMutate(Mutator.incr, delta, initial, eFlag); return collectionMutate(key, bKey.toString(), mutate); } + @Override public ArcusFuture bopDecr(String key, BKey bKey, int delta) { CollectionMutate mutate = new BTreeMutate(Mutator.decr, delta); return collectionMutate(key, bKey.toString(), mutate); } + @Override public ArcusFuture bopDecr(String key, BKey bKey, int delta, long initial, byte[] eFlag) { CollectionMutate mutate = new BTreeMutate(Mutator.decr, delta, initial, eFlag); return collectionMutate(key, bKey.toString(), mutate); } + @Override public ArcusFuture> bopGet(String key, BKey bKey, BopGetArgs args) { AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>()); @@ -1293,6 +1352,7 @@ public void gotData(String bKey, int flags, byte[] data, byte[] eFlag) { return future; } + @Override public ArcusFuture> bopGet(String key, BKey from, BKey to, BopGetArgs args) { verifyBKeyTypesMatch(from, to); @@ -1365,6 +1425,7 @@ private static BTreeGet createBTreeGet(BKey from, BKey to, BopGetArgs args) { args.isWithDelete(), args.isDropIfEmpty()); } + @Override public ArcusFuture>> bopMultiGet(List keys, BKey from, BKey to, BopGetArgs args) { @@ -1493,6 +1554,7 @@ private BTreeGetBulk createBTreeGetBulk(MemcachedNode node, List keys args.getOffset(), args.getCount()); } + @Override public ArcusFuture> bopSortMergeGet(List keys, BKey from, BKey to, boolean unique, BopGetArgs args) { keyValidator.validateKey(keys); @@ -1607,6 +1669,7 @@ private BTreeSMGet createBTreeSMGet(BKey from, BKey to, BopGetArgs args, args.getCount(), unique); } + @Override public ArcusFuture bopGetPosition(String key, BKey bKey, BTreeOrder order) { AbstractArcusResult result = new AbstractArcusResult<>(new AtomicReference<>()); ArcusFutureImpl future = new ArcusFutureImpl<>(result); @@ -1651,6 +1714,7 @@ public void complete() { return future; } + @Override public ArcusFuture> bopGetByPosition(String key, int pos, BTreeOrder order) { AbstractArcusResult> result = new AbstractArcusResult<>(new AtomicReference<>()); @@ -1697,6 +1761,7 @@ public void complete() { return future; } + @Override public ArcusFuture>> bopGetByPosition(String key, int from, int to, BTreeOrder order) { @@ -1750,6 +1815,7 @@ public void complete() { return future; } + @Override public ArcusFuture>> bopPositionWithGet(String key, BKey bKey, int count, @@ -1802,6 +1868,7 @@ public void complete() { return future; } + @Override public ArcusFuture bopCount(String key, BKey from, BKey to, ElementFlagFilter eFlagFilter) { verifyBKeyTypesMatch(from, to); @@ -1844,12 +1911,14 @@ public void complete() { return future; } + @Override public ArcusFuture bopDelete(String key, BKey bKey, BopDeleteArgs args) { BTreeDelete delete = new BTreeDelete(bKey.toString(), args.getEFlagFilter(), args.isDropIfEmpty(), false); return collectionDelete(key, delete); } + @Override public ArcusFuture bopDelete(String key, BKey from, BKey to, BopDeleteArgs args) { verifyBKeyTypesMatch(from, to); BTreeDelete delete = new BTreeDelete(from.toString(), to.toString(), @@ -2089,10 +2158,12 @@ public void complete() { return future; } + @Override public ArcusFuture flush() { return flush(-1); } + @Override public ArcusFuture flush(int delay) { if (delay < -1) { throw new IllegalArgumentException("Delay should be greater than or equal to -1"); @@ -2135,10 +2206,12 @@ public void complete() { return new ArcusMultiFuture<>(futures, () -> true); } + @Override public ArcusFuture flush(String prefix) { return flush(prefix, -1); } + @Override public ArcusFuture flush(String prefix, int delay) { if (prefix == null) { throw new IllegalArgumentException("Prefix should not be null"); @@ -2197,10 +2270,12 @@ public void complete() { }); } + @Override public ArcusFuture>> stats() { return stats(StatsArg.GENERAL); } + @Override public ArcusFuture>> stats(StatsArg arg) { ArcusClient client = arcusClientSupplier.get(); Collection nodes = client.getAllNodes(); @@ -2262,6 +2337,7 @@ public void complete() { }); } + @Override public ArcusFuture> versions() { ArcusClient client = arcusClientSupplier.get(); Collection nodes = client.getAllNodes();