SCAN iterator position handling #277, #230

pull/282/head
Nikita 9 years ago
parent fe824978c1
commit 9b89c1a12c

@ -82,18 +82,14 @@ public class RedissonKeys implements RKeys {
return new Iterator<String>() {
private Iterator<String> iter;
private Long iterPos;
private long iterPos;
private boolean removeExecuted;
private String value;
@Override
public boolean hasNext() {
if (iter == null) {
ListScanResult<String> res = scanIterator(slot, 0, pattern);
iter = res.getValues().iterator();
iterPos = res.getPos();
} else if (!iter.hasNext() && iterPos != 0) {
if (iter == null || !iter.hasNext()) {
ListScanResult<String> res = scanIterator(slot, iterPos, pattern);
iter = res.getValues().iterator();
iterPos = res.getPos();

@ -309,12 +309,9 @@ public class RedissonMap<K, V> extends RedissonExpirable implements RMap<K, V> {
@Override
public boolean hasNext() {
if (iter == null
|| (!iter.hasNext() && iterPos != 0)) {
if (iter == null || !iter.hasNext()) {
MapScanResult<Object, V> res = scanIterator(client, iterPos);
if (iter == null) {
client = res.getRedisClient();
}
client = res.getRedisClient();
iter = ((Map<K, V>)res.getMap()).entrySet().iterator();
iterPos = res.getPos();
}

@ -165,20 +165,16 @@ public class RedissonScoredSortedSet<V> extends RedissonExpirable implements RSc
private Iterator<V> iter;
private RedisClient client;
private Long iterPos;
private long iterPos;
private boolean removeExecuted;
private V value;
@Override
public boolean hasNext() {
if (iter == null) {
ListScanResult<V> res = scanIterator(null, 0);
client = res.getRedisClient();
iter = res.getValues().iterator();
iterPos = res.getPos();
} else if (!iter.hasNext() && iterPos != 0) {
if (iter == null || !iter.hasNext()) {
ListScanResult<V> res = scanIterator(client, iterPos);
client = res.getRedisClient();
iter = res.getValues().iterator();
iterPos = res.getPos();
}

@ -86,20 +86,16 @@ public class RedissonSet<V> extends RedissonExpirable implements RSet<V> {
private Iterator<V> iter;
private RedisClient client;
private Long iterPos;
private long iterPos;
private boolean removeExecuted;
private V value;
@Override
public boolean hasNext() {
if (iter == null) {
ListScanResult<V> res = scanIterator(null, 0);
client = res.getRedisClient();
iter = res.getValues().iterator();
iterPos = res.getPos();
} else if (!iter.hasNext() && iterPos != 0) {
if (iter == null || !iter.hasNext()) {
ListScanResult<V> res = scanIterator(client, iterPos);
client = res.getRedisClient();
iter = res.getValues().iterator();
iterPos = res.getPos();
}

Loading…
Cancel
Save