From e7b911225b8b7178aac2c94e0bf552cb24dd6409 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 29 Jul 2022 18:27:21 +0200 Subject: [PATCH 1/1] Pass maximum chunk size to AbstractNetconfSessionNegotiator We want to be able to control incoming maximum chunk size on a session-by-session basis. This patch allows session negotiators to specify this value for each instance. JIRA: NETCONF-888 Change-Id: Ib001942ada2d5445a558f30efc8b6ec2a12395d0 Signed-off-by: Robert Varga --- .../NetconfClientSessionNegotiator.java | 3 ++- .../impl/NetconfServerSessionNegotiator.java | 3 ++- .../AbstractNetconfSessionNegotiator.java | 19 ++++++++++++++++--- .../nettyutil/TestSessionNegotiator.java | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiator.java b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiator.java index a1fe12eb97..a15dd2747e 100644 --- a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiator.java +++ b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiator.java @@ -55,7 +55,8 @@ class NetconfClientSessionNegotiator NetconfClientSessionNegotiator(final NetconfHelloMessage hello, final NetconfStartExiMessage startExi, final Promise promise, final Channel channel, final Timer timer, final NetconfClientSessionListener sessionListener, final long connectionTimeoutMillis) { - super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis); + super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis, + DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE); this.startExi = startExi; } diff --git a/netconf/netconf-impl/src/main/java/org/opendaylight/netconf/impl/NetconfServerSessionNegotiator.java b/netconf/netconf-impl/src/main/java/org/opendaylight/netconf/impl/NetconfServerSessionNegotiator.java index 2bb0ec3156..407f663deb 100644 --- a/netconf/netconf-impl/src/main/java/org/opendaylight/netconf/impl/NetconfServerSessionNegotiator.java +++ b/netconf/netconf-impl/src/main/java/org/opendaylight/netconf/impl/NetconfServerSessionNegotiator.java @@ -32,7 +32,8 @@ public final class NetconfServerSessionNegotiator NetconfServerSessionNegotiator(final NetconfHelloMessage hello, final long sessionId, final Promise promise, final Channel channel, final Timer timer, final NetconfServerSessionListener sessionListener, final long connectionTimeoutMillis) { - super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis); + super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis, + DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE); this.sessionId = sessionId; } diff --git a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/AbstractNetconfSessionNegotiator.java b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/AbstractNetconfSessionNegotiator.java index 3566bf4bb1..04f4aa90b5 100644 --- a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/AbstractNetconfSessionNegotiator.java +++ b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/AbstractNetconfSessionNegotiator.java @@ -7,6 +7,7 @@ */ package org.opendaylight.netconf.nettyutil; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; @@ -77,6 +78,7 @@ public abstract class AbstractNetconfSessionNegotiator promise; private final L sessionListener; @@ -88,14 +90,25 @@ public abstract class AbstractNetconfSessionNegotiator promise, - final Channel channel, final Timer timer, - final L sessionListener, final long connectionTimeoutMillis) { + final Channel channel, final Timer timer, final L sessionListener, + final long connectionTimeoutMillis, + final @NonNegative int maximumIncomingChunkSize) { this.localHello = requireNonNull(hello); this.promise = requireNonNull(promise); this.channel = requireNonNull(channel); this.timer = timer; this.sessionListener = sessionListener; this.connectionTimeoutMillis = connectionTimeoutMillis; + this.maximumIncomingChunkSize = maximumIncomingChunkSize; + checkArgument(maximumIncomingChunkSize > 0, "Invalid maximum incoming chunk size %s", maximumIncomingChunkSize); + } + + @Deprecated(since = "4.0.1", forRemoval = true) + protected AbstractNetconfSessionNegotiator(final NetconfHelloMessage hello, final Promise promise, + final Channel channel, final Timer timer, + final L sessionListener, final long connectionTimeoutMillis) { + this(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis, + DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE); } protected final @NonNull NetconfHelloMessage localHello() { @@ -194,7 +207,7 @@ public abstract class AbstractNetconfSessionNegotiator promise, final Channel channel, final Timer timer, final NetconfSessionListener sessionListener, final long connectionTimeoutMillis) { - super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis); + super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis, 16384); } @Override -- 2.36.6