From 0adbcd6afab69b8b215f69f8336b483c9925b35a Mon Sep 17 00:00:00 2001 From: Nikita Date: Sun, 5 Apr 2015 18:29:39 +0300 Subject: [PATCH] RList.getAsync method added --- src/main/java/org/redisson/RedissonList.java | 30 +++++++++++++------- src/main/java/org/redisson/core/RList.java | 2 ++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/redisson/RedissonList.java b/src/main/java/org/redisson/RedissonList.java index c11ed40d3..0c21713b3 100644 --- a/src/main/java/org/redisson/RedissonList.java +++ b/src/main/java/org/redisson/RedissonList.java @@ -27,6 +27,7 @@ import java.util.ListIterator; import java.util.NoSuchElementException; import org.redisson.async.AsyncOperation; +import org.redisson.async.OperationListener; import org.redisson.async.ResultOperation; import org.redisson.async.SyncOperation; import org.redisson.connection.ConnectionManager; @@ -161,9 +162,13 @@ public class RedissonList extends RedissonExpirable implements RList { public Future addAllAsync(final Collection c) { return connectionManager.writeAsync(getName(), new AsyncOperation() { @Override - public void execute(Promise promise, RedisAsyncConnection async) { - async.rpush((Object)getName(), c.toArray()); - promise.setSuccess(true); + public void execute(final Promise promise, RedisAsyncConnection async) { + async.rpush((Object)getName(), c.toArray()).addListener(new OperationListener(promise, async, this) { + @Override + public void onOperationComplete(Future future) throws Exception { + promise.setSuccess(true); + } + }); } }); } @@ -257,19 +262,24 @@ public class RedissonList extends RedissonExpirable implements RList { } @Override - public V get(final int index) { - checkIndex(index); - return getValue(index); - } - - private V getValue(final int index) { - return connectionManager.read(getName(), new ResultOperation() { + public Future getAsync(final int index) { + return connectionManager.readAsync(getName(), new ResultOperation() { @Override protected Future execute(RedisAsyncConnection async) { return async.lindex(getName(), index); } }); } + + @Override + public V get(int index) { + checkIndex(index); + return getValue(index); + } + + private V getValue(int index) { + return connectionManager.get(getAsync(index)); + } private void checkIndex(int index) { int size = size(); diff --git a/src/main/java/org/redisson/core/RList.java b/src/main/java/org/redisson/core/RList.java index aadef7957..b82925f96 100644 --- a/src/main/java/org/redisson/core/RList.java +++ b/src/main/java/org/redisson/core/RList.java @@ -29,6 +29,8 @@ import java.util.List; */ public interface RList extends List, RExpirable { + Future getAsync(int index); + Future addAsync(V e); Future addAllAsync(Collection c);