From 3f55d2fc7af1b69d38f75efa93915f8fede6852f Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 16 Jul 2015 16:06:24 +0300 Subject: [PATCH] pollLastAndOfferFirstToAsync added --- src/main/java/org/redisson/RedissonQueue.java | 14 +++++++++++++- src/main/java/org/redisson/core/RQueue.java | 10 ++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redisson/RedissonQueue.java b/src/main/java/org/redisson/RedissonQueue.java index f80bae9e5..d7e4b353f 100644 --- a/src/main/java/org/redisson/RedissonQueue.java +++ b/src/main/java/org/redisson/RedissonQueue.java @@ -21,6 +21,8 @@ import org.redisson.client.protocol.RedisCommands; import org.redisson.connection.ConnectionManager; import org.redisson.core.RQueue; +import io.netty.util.concurrent.Future; + /** * Distributed and concurrent implementation of {@link java.util.Queue} * @@ -80,7 +82,17 @@ public class RedissonQueue extends RedissonList implements RQueue { @Override public V pollLastAndOfferFirstTo(String queueName) { - return connectionManager.write(getName(), RedisCommands.RPOPLPUSH, getName(), queueName); + return connectionManager.get(pollLastAndOfferFirstToAsync(queueName)); + } + + @Override + public Future pollLastAndOfferFirstToAsync(String queueName) { + return connectionManager.writeAsync(getName(), RedisCommands.RPOPLPUSH, getName(), queueName); + } + + @Override + public Future pollLastAndOfferFirstToAsync(RQueue queue) { + return pollLastAndOfferFirstToAsync(queue.getName()); } @Override diff --git a/src/main/java/org/redisson/core/RQueue.java b/src/main/java/org/redisson/core/RQueue.java index 201409010..8d8ab10f8 100644 --- a/src/main/java/org/redisson/core/RQueue.java +++ b/src/main/java/org/redisson/core/RQueue.java @@ -17,6 +17,8 @@ package org.redisson.core; import java.util.Queue; +import io.netty.util.concurrent.Future; + /** * {@link java.util.Queue} backed by Redis * @@ -26,8 +28,12 @@ import java.util.Queue; */ public interface RQueue extends Queue, RExpirable { + Future pollLastAndOfferFirstToAsync(RQueue queue); + + Future pollLastAndOfferFirstToAsync(String queueName); + V pollLastAndOfferFirstTo(String dequeName); - + V pollLastAndOfferFirstTo(RQueue deque); - + }