From e234d6ca7742bf5a508c6189b24b2e4fe47fd98d Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 18 Jan 2018 13:26:20 +0300 Subject: [PATCH] refactoring --- .../java/org/redisson/RedissonBaseAdder.java | 38 ++++++++----------- .../org/redisson/RedissonDoubleAdder.java | 4 +- .../java/org/redisson/RedissonLongAdder.java | 4 +- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonBaseAdder.java b/redisson/src/main/java/org/redisson/RedissonBaseAdder.java index 37c65e45e..91eba4573 100644 --- a/redisson/src/main/java/org/redisson/RedissonBaseAdder.java +++ b/redisson/src/main/java/org/redisson/RedissonBaseAdder.java @@ -15,17 +15,13 @@ */ package org.redisson; -import java.util.Arrays; - import org.redisson.api.RFuture; import org.redisson.api.RSemaphore; import org.redisson.api.RTopic; import org.redisson.api.RedissonClient; import org.redisson.api.listener.MessageListener; import org.redisson.client.codec.LongCodec; -import org.redisson.client.protocol.RedisCommands; import org.redisson.command.CommandAsyncExecutor; -import org.redisson.misc.LongAdder; import org.redisson.misc.RPromise; import org.redisson.misc.RedissonPromise; import org.slf4j.Logger; @@ -109,20 +105,17 @@ public abstract class RedissonBaseAdder extends RedissonExpira public RFuture sumAsync() { final RPromise result = new RedissonPromise(); - RFuture future = commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_INTEGER, - "redis.call('del', KEYS[1]); " - + "return redis.call('publish', KEYS[2], ARGV[1]); ", - Arrays.asList(getName(), topic.getChannelNames().get(0)), SUM_MSG); - future.addListener(new FutureListener() { + RFuture future = topic.publishAsync(SUM_MSG); + future.addListener(new FutureListener() { @Override - public void operationComplete(Future future) throws Exception { + public void operationComplete(Future future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } - - semaphore.acquireAsync(future.getNow()).addListener(new FutureListener() { + + semaphore.acquireAsync(future.getNow().intValue()).addListener(new FutureListener() { @Override public void operationComplete(Future future) throws Exception { if (!future.isSuccess()) { @@ -130,7 +123,7 @@ public abstract class RedissonBaseAdder extends RedissonExpira return; } - RFuture valueFuture = getAsync(); + RFuture valueFuture = getAndDeleteAsync(); valueFuture.addListener(new FutureListener() { @Override public void operationComplete(Future future) throws Exception { @@ -153,21 +146,22 @@ public abstract class RedissonBaseAdder extends RedissonExpira public RFuture resetAsync() { final RPromise result = new RedissonPromise(); - RFuture future = commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_INTEGER, - "redis.call('del', KEYS[1]); " - + "return redis.call('publish', KEYS[2], ARGV[1]); ", - Arrays.asList(getName(), topic.getChannelNames().get(0)), CLEAR_MSG); - - future.addListener(new FutureListener() { + RFuture future = topic.publishAsync(CLEAR_MSG); + future.addListener(new FutureListener() { @Override - public void operationComplete(Future future) throws Exception { + public void operationComplete(Future future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } - semaphore.acquireAsync(future.getNow()).addListener(new FutureListener() { + int value = 0; + if (future.getNow() != null) { + value = future.getNow().intValue(); + } + + semaphore.acquireAsync(value).addListener(new FutureListener() { @Override public void operationComplete(Future future) throws Exception { if (!future.isSuccess()) { @@ -190,6 +184,6 @@ public abstract class RedissonBaseAdder extends RedissonExpira protected abstract RFuture addAndGetAsync(); - protected abstract RFuture getAsync(); + protected abstract RFuture getAndDeleteAsync(); } diff --git a/redisson/src/main/java/org/redisson/RedissonDoubleAdder.java b/redisson/src/main/java/org/redisson/RedissonDoubleAdder.java index b5a582db6..2803d7ef3 100644 --- a/redisson/src/main/java/org/redisson/RedissonDoubleAdder.java +++ b/redisson/src/main/java/org/redisson/RedissonDoubleAdder.java @@ -50,8 +50,8 @@ public class RedissonDoubleAdder extends RedissonBaseAdder implements RD } @Override - protected RFuture getAsync() { - return atomicDouble.getAsync(); + protected RFuture getAndDeleteAsync() { + return atomicDouble.getAndDeleteAsync(); } @Override diff --git a/redisson/src/main/java/org/redisson/RedissonLongAdder.java b/redisson/src/main/java/org/redisson/RedissonLongAdder.java index c0faeda87..6cb4dfd22 100644 --- a/redisson/src/main/java/org/redisson/RedissonLongAdder.java +++ b/redisson/src/main/java/org/redisson/RedissonLongAdder.java @@ -49,8 +49,8 @@ public class RedissonLongAdder extends RedissonBaseAdder implements RLongA } @Override - protected RFuture getAsync() { - return atomicLong.getAsync(); + protected RFuture getAndDeleteAsync() { + return atomicLong.getAndDeleteAsync(); } @Override