From 4952c80c98981811ef4f37ab6cc67ef7d8a5e6d2 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 8 Jun 2023 12:06:17 +0300 Subject: [PATCH] Feature - inactive property added to StreamConsumer object #5093 --- .../java/org/redisson/api/StreamConsumer.java | 30 ++++++++++++------- .../decoder/StreamConsumerInfoDecoder.java | 8 +++-- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/redisson/src/main/java/org/redisson/api/StreamConsumer.java b/redisson/src/main/java/org/redisson/api/StreamConsumer.java index 0eb35a0e1..47e6185b9 100644 --- a/redisson/src/main/java/org/redisson/api/StreamConsumer.java +++ b/redisson/src/main/java/org/redisson/api/StreamConsumer.java @@ -17,7 +17,7 @@ package org.redisson.api; /** * Object containing details about Stream Consumer - * + * * @author Nikita Koksharov * */ @@ -26,25 +26,27 @@ public class StreamConsumer { private final String name; private final int pending; private final long idleTime; - - public StreamConsumer(String name, int pending, long idleTime) { + private final long inactive; + + public StreamConsumer(String name, int pending, long idleTime, long inactive) { this.name = name; this.pending = pending; this.idleTime = idleTime; + this.inactive = inactive; } /** * Returns amount of pending messages for this consumer - * - * @return amount of pending messages + * + * @return amount of pending messages */ public int getPending() { return pending; } - + /** * Returns name of this consumer - * + * * @return name of consumer */ public String getName() { @@ -52,12 +54,20 @@ public class StreamConsumer { } /** - * Returns idle time in milliseconds since which this consumer hasn't consumed messages - * + * Returns idle time in milliseconds since which this consumer hasn't consumed messages + * * @return idle time in milliseconds */ public long getIdleTime() { return idleTime; } - + + /** + * Returns time in milliseconds since the last successful interaction of this consumer + * + * @return time in milliseconds + */ + public long getInactive() { + return inactive; + } } diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamConsumerInfoDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamConsumerInfoDecoder.java index c1cb80830..32b063e11 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamConsumerInfoDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamConsumerInfoDecoder.java @@ -29,8 +29,12 @@ public class StreamConsumerInfoDecoder implements MultiDecoder { @Override public StreamConsumer decode(List parts, State state) { - return new StreamConsumer((String) parts.get(1), - ((Long) parts.get(3)).intValue(), (Long) parts.get(5)); + if (parts.size() > 6) { + return new StreamConsumer((String) parts.get(1), + ((Long) parts.get(3)).intValue(), (Long) parts.get(5), (Long) parts.get(7)); + } + return new StreamConsumer((String) parts.get(1), + ((Long) parts.get(3)).intValue(), (Long) parts.get(5), -1); } }