From deb444fa8459c778e604f27e548f74aa0eb8ffae Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada Date: Thu, 19 Jan 2023 18:47:02 +0100 Subject: [PATCH 1/6] added withServerTimeout and withKeepAliveInterval to HubConnectionBuilder for java client --- .../signalr/HttpHubConnectionBuilder.java | 26 ++++++++++++++++++- .../com/microsoft/signalr/HubConnection.java | 9 ++++--- .../microsoft/signalr/HubConnectionTest.java | 14 +++++++++- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index 724377ca474d..f88ef1243cd6 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -23,6 +23,8 @@ public class HttpHubConnectionBuilder { private Map headers; private TransportEnum transportEnum; private Action1 configureBuilder; + private Long serverTimeout; + private Long keepAliveInterval; HttpHubConnectionBuilder(String url) { this.url = url; @@ -140,6 +142,28 @@ public HttpHubConnectionBuilder setHttpClientBuilderCallback(Action1 onClosedCallbackList; - private long keepAliveInterval = 15 * 1000; - private long serverTimeout = 30 * 1000; + private long keepAliveInterval; + private long serverTimeout; private long handshakeResponseTimeout = 15 * 1000; // Private property, modified for testing @@ -120,7 +120,7 @@ Transport getTransport() { HubConnection(String url, Transport transport, boolean skipNegotiate, HttpClient httpClient, HubProtocol protocol, Single accessTokenProvider, long handshakeResponseTimeout, Map headers, TransportEnum transportEnum, - Action1 configureBuilder) { + Action1 configureBuilder, Long serverTimeout, Long keepAliveInterval) { if (url == null || url.isEmpty()) { throw new IllegalArgumentException("A valid url is required."); } @@ -159,6 +159,9 @@ Transport getTransport() { this.headers = headers; this.skipNegotiate = skipNegotiate; + this.serverTimeout = Objects.nonNull(serverTimeout) ? serverTimeout : 30 * 1000; + this.keepAliveInterval = Objects.nonNull(keepAliveInterval) ? keepAliveInterval : 15 * 1000; + this.callback = (payload) -> ReceiveLoop(payload); } diff --git a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java index 34cf8cd64a4a..c9bf2b6dc8e9 100644 --- a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java +++ b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java @@ -314,7 +314,7 @@ public void removingMultipleHandlersWithOneCallToRemove() { Action action = () -> value.getAndUpdate((val) -> val + 1); Action secondAction = () -> { value.getAndUpdate((val) -> val + 2); - + complete.onComplete(); }; @@ -3962,4 +3962,16 @@ public void hubConnectionStopDuringConnecting() { assertTrue(close.blockingAwait(30, TimeUnit.SECONDS)); } + + @Test + public void serverTimeoutIsSetThroughBuilder() + { + long timeout = 60; + HubConnection hubConnection = HubConnectionBuilder + .create("http://example.com") + .withServerTimeout(timeout) + .build(); + + assertEquals(timeout, hubConnection.getServerTimeout()); + } } From 8e915f82f6688d4159a80fa2af24c634468cda87 Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada Date: Fri, 20 Jan 2023 12:40:31 +0100 Subject: [PATCH 2/6] added test for withKeepAliveInterval --- .../com/microsoft/signalr/HubConnectionTest.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java index c9bf2b6dc8e9..53d11d3d972d 100644 --- a/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java +++ b/src/SignalR/clients/java/signalr/test/src/main/java/com/microsoft/signalr/HubConnectionTest.java @@ -3966,7 +3966,7 @@ public void hubConnectionStopDuringConnecting() { @Test public void serverTimeoutIsSetThroughBuilder() { - long timeout = 60; + long timeout = 60 * 1000; HubConnection hubConnection = HubConnectionBuilder .create("http://example.com") .withServerTimeout(timeout) @@ -3974,4 +3974,16 @@ public void serverTimeoutIsSetThroughBuilder() assertEquals(timeout, hubConnection.getServerTimeout()); } + + @Test + public void keepAliveIntervalIsSetThroughBuilder() + { + long interval = 60 * 1000; + HubConnection hubConnection = HubConnectionBuilder + .create("http://example.com") + .withKeepAliveInterval(interval) + .build(); + + assertEquals(interval, hubConnection.getKeepAliveInterval()); + } } From 3885747e6b6477666f17e6c4d0af087aa068f31e Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada Date: Mon, 23 Jan 2023 10:08:43 +0100 Subject: [PATCH 3/6] added DefaultHubConnectionSettings class with default values for serverTimeout and keepAliveInterval --- .../signalr/DefaultHubConnectionSettings.java | 6 ++++++ .../microsoft/signalr/HttpHubConnectionBuilder.java | 4 ++-- .../main/java/com/microsoft/signalr/HubConnection.java | 10 +++++----- 3 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java new file mode 100644 index 000000000000..0ce190123338 --- /dev/null +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java @@ -0,0 +1,6 @@ +package com.microsoft.signalr; + +public class DefaultHubConnectionSettings { + static final long SERVER_TIMEOUT = 30 * 1000; + static final long KEEP_ALIVE_INTERVAL = 15 * 1000; +} diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index f88ef1243cd6..4d73d61f8ce3 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -23,8 +23,8 @@ public class HttpHubConnectionBuilder { private Map headers; private TransportEnum transportEnum; private Action1 configureBuilder; - private Long serverTimeout; - private Long keepAliveInterval; + private long serverTimeout = DefaultHubConnectionSettings.SERVER_TIMEOUT; + private long keepAliveInterval = DefaultHubConnectionSettings.KEEP_ALIVE_INTERVAL; HttpHubConnectionBuilder(String url) { this.url = url; diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java index a7cb704e6958..e7430e9b36e4 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java @@ -49,8 +49,8 @@ public class HubConnection implements AutoCloseable { // These are all user-settable properties private String baseUrl; private List onClosedCallbackList; - private long keepAliveInterval; - private long serverTimeout; + private long keepAliveInterval = DefaultHubConnectionSettings.KEEP_ALIVE_INTERVAL; + private long serverTimeout = DefaultHubConnectionSettings.SERVER_TIMEOUT; private long handshakeResponseTimeout = 15 * 1000; // Private property, modified for testing @@ -120,7 +120,7 @@ Transport getTransport() { HubConnection(String url, Transport transport, boolean skipNegotiate, HttpClient httpClient, HubProtocol protocol, Single accessTokenProvider, long handshakeResponseTimeout, Map headers, TransportEnum transportEnum, - Action1 configureBuilder, Long serverTimeout, Long keepAliveInterval) { + Action1 configureBuilder, long serverTimeout, long keepAliveInterval) { if (url == null || url.isEmpty()) { throw new IllegalArgumentException("A valid url is required."); } @@ -159,8 +159,8 @@ Transport getTransport() { this.headers = headers; this.skipNegotiate = skipNegotiate; - this.serverTimeout = Objects.nonNull(serverTimeout) ? serverTimeout : 30 * 1000; - this.keepAliveInterval = Objects.nonNull(keepAliveInterval) ? keepAliveInterval : 15 * 1000; + this.serverTimeout = serverTimeout; + this.keepAliveInterval = keepAliveInterval; this.callback = (payload) -> ReceiveLoop(payload); } From 1d279cc598fb006b2882612872df6e8b6d295efb Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada Date: Mon, 23 Jan 2023 10:29:54 +0100 Subject: [PATCH 4/6] initialize defaults in HubConnection class instead of creating new class --- .../microsoft/signalr/DefaultHubConnectionSettings.java | 6 ------ .../com/microsoft/signalr/HttpHubConnectionBuilder.java | 4 ++-- .../src/main/java/com/microsoft/signalr/HubConnection.java | 7 +++++-- 3 files changed, 7 insertions(+), 10 deletions(-) delete mode 100644 src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java deleted file mode 100644 index 0ce190123338..000000000000 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/DefaultHubConnectionSettings.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.microsoft.signalr; - -public class DefaultHubConnectionSettings { - static final long SERVER_TIMEOUT = 30 * 1000; - static final long KEEP_ALIVE_INTERVAL = 15 * 1000; -} diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index 4d73d61f8ce3..7d248e73de30 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -23,8 +23,8 @@ public class HttpHubConnectionBuilder { private Map headers; private TransportEnum transportEnum; private Action1 configureBuilder; - private long serverTimeout = DefaultHubConnectionSettings.SERVER_TIMEOUT; - private long keepAliveInterval = DefaultHubConnectionSettings.KEEP_ALIVE_INTERVAL; + private long serverTimeout = HubConnection.DEFAULT_SERVER_TIMEOUT; + private long keepAliveInterval = HubConnection.DEFAULT_KEEP_ALIVE_INTERVAL; HttpHubConnectionBuilder(String url) { this.url = url; diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java index e7430e9b36e4..c306d592fd85 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HubConnection.java @@ -30,6 +30,9 @@ * A connection used to invoke hub methods on a SignalR Server. */ public class HubConnection implements AutoCloseable { + static final long DEFAULT_SERVER_TIMEOUT = 30 * 1000; + static final long DEFAULT_KEEP_ALIVE_INTERVAL = 15 * 1000; + private static final byte RECORD_SEPARATOR = 0x1e; private static final List emptyArray = new ArrayList<>(); private static final int MAX_NEGOTIATE_ATTEMPTS = 100; @@ -49,8 +52,8 @@ public class HubConnection implements AutoCloseable { // These are all user-settable properties private String baseUrl; private List onClosedCallbackList; - private long keepAliveInterval = DefaultHubConnectionSettings.KEEP_ALIVE_INTERVAL; - private long serverTimeout = DefaultHubConnectionSettings.SERVER_TIMEOUT; + private long keepAliveInterval = DEFAULT_KEEP_ALIVE_INTERVAL; + private long serverTimeout = DEFAULT_SERVER_TIMEOUT; private long handshakeResponseTimeout = 15 * 1000; // Private property, modified for testing From 276960c3ad7a3d437b06811fcb9a052f82db198e Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> Date: Mon, 23 Jan 2023 19:12:23 +0100 Subject: [PATCH 5/6] Update src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java Co-authored-by: Brennan --- .../com/microsoft/signalr/HttpHubConnectionBuilder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index 7d248e73de30..5fa786a66514 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -145,11 +145,11 @@ public HttpHubConnectionBuilder setHttpClientBuilderCallback(Action1 Date: Mon, 23 Jan 2023 19:12:35 +0100 Subject: [PATCH 6/6] Update src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java Co-authored-by: Brennan --- .../com/microsoft/signalr/HttpHubConnectionBuilder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java index 5fa786a66514..63867379e49d 100644 --- a/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java +++ b/src/SignalR/clients/java/signalr/core/src/main/java/com/microsoft/signalr/HttpHubConnectionBuilder.java @@ -156,11 +156,11 @@ public HttpHubConnectionBuilder withServerTimeout(long timeoutInMilliseconds) { /** * Sets keepAliveInterval for the {@link HubConnection}. * - * @param interval The keepAliveInterval to be set. + * @param intervalInMilliseconds The keepAliveInterval to be set. * @return This instance of the HttpHubConnectionBuilder. */ - public HttpHubConnectionBuilder withKeepAliveInterval(long interval) { - this.keepAliveInterval = interval; + public HttpHubConnectionBuilder withKeepAliveInterval(long intervalInMilliseconds) { + this.keepAliveInterval = intervalInMilliseconds; return this; }