From d75f61023362be5536bac596a575eb6a1d0809c9 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 28 Mar 2019 11:07:27 +0300 Subject: [PATCH] Feature - remainTimeToLive method added to RLock, RLockAsync, RLockRx and RLockReactive interfaces. #2011 --- .../src/main/java/org/redisson/RedissonMultiLock.java | 10 ++++++++++ redisson/src/main/java/org/redisson/api/RLock.java | 9 +++++++++ .../src/main/java/org/redisson/api/RLockAsync.java | 9 +++++++++ .../src/main/java/org/redisson/api/RLockReactive.java | 9 +++++++++ redisson/src/main/java/org/redisson/api/RLockRx.java | 9 +++++++++ 5 files changed, 46 insertions(+) diff --git a/redisson/src/main/java/org/redisson/RedissonMultiLock.java b/redisson/src/main/java/org/redisson/RedissonMultiLock.java index 7baf1470f..cdb4dfa4d 100644 --- a/redisson/src/main/java/org/redisson/RedissonMultiLock.java +++ b/redisson/src/main/java/org/redisson/RedissonMultiLock.java @@ -547,4 +547,14 @@ public class RedissonMultiLock implements RLock { throw new UnsupportedOperationException(); } + @Override + public RFuture remainTimeToLiveAsync() { + throw new UnsupportedOperationException(); + } + + @Override + public long remainTimeToLive() { + throw new UnsupportedOperationException(); + } + } diff --git a/redisson/src/main/java/org/redisson/api/RLock.java b/redisson/src/main/java/org/redisson/api/RLock.java index 7615288c8..f81a71ed2 100644 --- a/redisson/src/main/java/org/redisson/api/RLock.java +++ b/redisson/src/main/java/org/redisson/api/RLock.java @@ -129,4 +129,13 @@ public interface RLock extends Lock, RLockAsync { */ int getHoldCount(); + /** + * Remaining time to live of this lock + * + * @return time in milliseconds + * -2 if the lock does not exist. + * -1 if the lock exists but has no associated expire. + */ + long remainTimeToLive(); + } diff --git a/redisson/src/main/java/org/redisson/api/RLockAsync.java b/redisson/src/main/java/org/redisson/api/RLockAsync.java index a2fc74395..22289ecb4 100644 --- a/redisson/src/main/java/org/redisson/api/RLockAsync.java +++ b/redisson/src/main/java/org/redisson/api/RLockAsync.java @@ -166,4 +166,13 @@ public interface RLockAsync { */ RFuture isLockedAsync(); + /** + * Remaining time to live of this lock + * + * @return time in milliseconds + * -2 if the lock does not exist. + * -1 if the lock exists but has no associated expire. + */ + RFuture remainTimeToLiveAsync(); + } diff --git a/redisson/src/main/java/org/redisson/api/RLockReactive.java b/redisson/src/main/java/org/redisson/api/RLockReactive.java index af762c7f9..0910612f8 100644 --- a/redisson/src/main/java/org/redisson/api/RLockReactive.java +++ b/redisson/src/main/java/org/redisson/api/RLockReactive.java @@ -175,4 +175,13 @@ public interface RLockReactive { */ Mono isLocked(); + /** + * Remaining time to live of this lock + * + * @return time in milliseconds + * -2 if the lock does not exist. + * -1 if the lock exists but has no associated expire. + */ + Mono remainTimeToLive(); + } diff --git a/redisson/src/main/java/org/redisson/api/RLockRx.java b/redisson/src/main/java/org/redisson/api/RLockRx.java index d0b17fbc5..4670e53ff 100644 --- a/redisson/src/main/java/org/redisson/api/RLockRx.java +++ b/redisson/src/main/java/org/redisson/api/RLockRx.java @@ -175,5 +175,14 @@ public interface RLockRx { * @return true if locked otherwise false */ Single isLocked(); + + /** + * Remaining time to live of this lock + * + * @return time in milliseconds + * -2 if the lock does not exist. + * -1 if the lock exists but has no associated expire. + */ + Single remainTimeToLive(); }