From 8701d7349002db59351ed9934ba6aa34283b66b1 Mon Sep 17 00:00:00 2001 From: Paul Gregoire <mondain@gmail.com> Date: Wed, 29 Nov 2023 09:23:56 -0800 Subject: [PATCH] Replace Number with int for PrivateNetstreamData in client. Update to 1.3.26 --- client/pom.xml | 2 +- .../main/java/org/red5/client/Red5Client.java | 2 +- .../net/rtmp/BaseRTMPClientHandler.java | 34 +++++++++++-------- client/src/main/resources/logback.xml | 23 +++++++++++++ common/pom.xml | 4 +-- .../main/java/org/red5/server/api/Red5.java | 4 +-- .../server/stream/AbstractClientStream.java | 14 ++++++-- io/pom.xml | 2 +- pom.xml | 2 +- server/pom.xml | 2 +- service/pom.xml | 2 +- 11 files changed, 64 insertions(+), 27 deletions(-) create mode 100644 client/src/main/resources/logback.xml diff --git a/client/pom.xml b/client/pom.xml index 9bad3b3d..5881d9f2 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.red5</groupId> <artifactId>red5-parent</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>red5-client</artifactId> diff --git a/client/src/main/java/org/red5/client/Red5Client.java b/client/src/main/java/org/red5/client/Red5Client.java index b2e6e5aa..9d6962c5 100644 --- a/client/src/main/java/org/red5/client/Red5Client.java +++ b/client/src/main/java/org/red5/client/Red5Client.java @@ -18,7 +18,7 @@ public final class Red5Client { /** * Current server version with revision */ - public static final String VERSION = "Red5 Client 1.3.25"; + public static final String VERSION = "Red5 Client 1.3.26"; /** * Create a new Red5Client object using the connection local to the current thread A bit of magic that lets you access the red5 scope diff --git a/client/src/main/java/org/red5/client/net/rtmp/BaseRTMPClientHandler.java b/client/src/main/java/org/red5/client/net/rtmp/BaseRTMPClientHandler.java index 3ab7436a..c280e4f1 100644 --- a/client/src/main/java/org/red5/client/net/rtmp/BaseRTMPClientHandler.java +++ b/client/src/main/java/org/red5/client/net/rtmp/BaseRTMPClientHandler.java @@ -11,7 +11,7 @@ import java.util.Arrays; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -98,7 +98,7 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I /** * Net stream handling */ - private volatile CopyOnWriteArrayList<NetStreamPrivateData> streamDataList = new CopyOnWriteArrayList<>(); + private volatile CopyOnWriteArraySet<NetStreamPrivateData> streamDataList = new CopyOnWriteArraySet<>(); /** * Task to start on connection close @@ -577,7 +577,8 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I log.debug("publish - stream id: {}, name: {}, mode: {}", streamId, name, mode); // setup the netstream handler if (handler != null) { - NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId().equals(streamId.doubleValue())).findFirst().orElse(null); + final int sid = streamId.intValue(); + NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId() == sid).findFirst().orElse(null); if (streamData != null) { log.debug("Setting handler on stream data - handler: {}", handler); streamData.handler = handler; @@ -608,7 +609,8 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I @Override public void publishStreamData(Number streamId, IMessage message) { // get the stream data by index of the list - NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId().equals(streamId.doubleValue())).findFirst().orElse(null); + final int sid = streamId.intValue(); + NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId() == sid).findFirst().orElse(null); if (streamData != null) { if (streamData.connConsumer != null) { streamData.connConsumer.pushMessage(null, message); @@ -808,9 +810,10 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I } if (streamId != null) { // try lookup by stream id, if null return the first one - NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId().equals(streamId)).findFirst().orElse(streamDataList.get(0)); + final int sid = streamId.intValue(); + NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId() == sid).findFirst().orElse(null); if (streamData == null) { - log.warn("Stream data was null for id: {}", streamId); + log.warn("Stream data was null for id: {} entry count: {}", streamId, streamDataList.size()); } else if (streamData.handler != null) { log.debug("Got stream data and handler"); streamData.handler.onStreamEvent((Notify) command); @@ -1028,9 +1031,9 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I Object callResult = call.getResult(); if (callResult != null) { // we expect a number consisting of the stream id, but we'll check for an object map as well - Number streamId = null; + int streamId = -1; if (callResult instanceof Number) { - streamId = (Number) callResult; + streamId = ((Number) callResult).intValue(); } else if (callResult instanceof Map) { Map<?, ?> map = (Map<?, ?>) callResult; // XXX(paul) log out the map contents @@ -1038,14 +1041,14 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I if (map.containsKey("streamId")) { Object tmpStreamId = map.get("streamId"); if (tmpStreamId instanceof Number) { - streamId = (Number) tmpStreamId; + streamId = ((Number) tmpStreamId).intValue(); } else { log.warn("CreateStreamCallBack resultReceived - stream id is not a number: {}", tmpStreamId); } } } log.debug("CreateStreamCallBack resultReceived - stream id: {} call: {} connection: {}", streamId, call, conn); - if (conn != null && streamId != null) { + if (conn != null && streamId != -1) { log.debug("Setting new net stream"); NetStream stream = new NetStream(streamEventDispatcher); stream.setConnection(conn); @@ -1100,7 +1103,8 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I log.debug("Deleting net stream"); conn.removeClientStream(streamId); // send a delete notify? - NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId().equals(streamId)).findFirst().orElse(null); + final int sid = streamId.intValue(); + NetStreamPrivateData streamData = streamDataList.stream().filter(s -> s.getStreamId() == sid).findFirst().orElse(null); if (streamData != null) { streamDataList.remove(streamData); } else { @@ -1148,22 +1152,22 @@ public abstract class BaseRTMPClientHandler extends BaseRTMPHandler implements I public volatile ConnectionConsumer connConsumer; - final Number streamId; + private final int streamId; - NetStreamPrivateData(Number streamId) { + NetStreamPrivateData(int streamId) { this.streamId = streamId; if (streamEventHandler != null) { handler = streamEventHandler; } } - public Number getStreamId() { + public int getStreamId() { return streamId; } @Override public int hashCode() { - return streamId.hashCode(); + return streamId; } } diff --git a/client/src/main/resources/logback.xml b/client/src/main/resources/logback.xml new file mode 100644 index 00000000..eae9066f --- /dev/null +++ b/client/src/main/resources/logback.xml @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<configuration> + + <jmxConfigurator /> + + <appender class="ch.qos.logback.core.ConsoleAppender" name="CONSOLE"> + <encoder> + <pattern>[%p] [%thread] %logger - %msg%n</pattern> + </encoder> + </appender> + + <root level="INFO"> + <appender-ref ref="CONSOLE" /> + </root> + + <logger name="org.red5.server.service.ReflectionUtils" level="TRACE" /> + <logger name="org.red5.server.service.ServiceInvoker" level="TRACE" /> + <logger name="org.red5.server.net.rtmp.RTMPHandler" level="TRACE" /> + + <logger name="org.red5.client.net.rtmp.BaseRTMPClientHandler" level="TRACE" /> + <logger name="org.red5.client.test" level="DEBUG" /> + +</configuration> \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 7382320a..fa9fd28f 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.red5</groupId> <artifactId>red5-parent</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>red5-server-common</artifactId> @@ -124,7 +124,7 @@ <dependency> <groupId>net.engio</groupId> <artifactId>mbassador</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </dependency> --> <dependency> <groupId>junit</groupId> diff --git a/common/src/main/java/org/red5/server/api/Red5.java b/common/src/main/java/org/red5/server/api/Red5.java index ff2678c0..a4fb0c7f 100644 --- a/common/src/main/java/org/red5/server/api/Red5.java +++ b/common/src/main/java/org/red5/server/api/Red5.java @@ -55,12 +55,12 @@ public final class Red5 { /** * Server version with revision */ - public static final String VERSION = "Red5 Server 1.3.25"; + public static final String VERSION = "Red5 Server 1.3.26"; /** * Server version for fmsVer requests */ - public static final String FMS_VERSION = "RED5/1,3,25,0"; + public static final String FMS_VERSION = "RED5/1,3,26,0"; /** * Server capabilities diff --git a/common/src/main/java/org/red5/server/stream/AbstractClientStream.java b/common/src/main/java/org/red5/server/stream/AbstractClientStream.java index 08f2c6b1..107e8938 100644 --- a/common/src/main/java/org/red5/server/stream/AbstractClientStream.java +++ b/common/src/main/java/org/red5/server/stream/AbstractClientStream.java @@ -20,7 +20,7 @@ public abstract class AbstractClientStream extends AbstractStream implements ICl /** * Stream identifier. Unique across server. */ - private Number streamId = 0.0d; + private int streamId; /** * Stream name of the broadcasting stream. @@ -43,10 +43,20 @@ public abstract class AbstractClientStream extends AbstractStream implements ICl * @param streamId * Stream id */ - public void setStreamId(Number streamId) { + public void setStreamId(int streamId) { this.streamId = streamId; } + /** + * Setter for stream id + * + * @param streamId + * Stream id + */ + public void setStreamId(Number streamId) { + this.streamId = streamId.intValue(); + } + /** * Return stream id * diff --git a/io/pom.xml b/io/pom.xml index 1d7df375..ffbd23a0 100644 --- a/io/pom.xml +++ b/io/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.red5</groupId> <artifactId>red5-parent</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>red5-io</artifactId> diff --git a/pom.xml b/pom.xml index 8c01f811..cb775dc5 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ <name>Red5</name> <description>The Red5 server</description> <groupId>org.red5</groupId> - <version>1.3.25</version> + <version>1.3.26</version> <url>https://github.com/Red5/red5-server</url> <inceptionYear>2005</inceptionYear> <organization> diff --git a/server/pom.xml b/server/pom.xml index c49dce6f..ee63aaa6 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.red5</groupId> <artifactId>red5-parent</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>red5-server</artifactId> diff --git a/service/pom.xml b/service/pom.xml index 28c49c5b..e08e568a 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -3,7 +3,7 @@ <parent> <groupId>org.red5</groupId> <artifactId>red5-parent</artifactId> - <version>1.3.25</version> + <version>1.3.26</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>red5-service</artifactId> -- GitLab