*/
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;
private final @NonNull NetconfHelloMessage localHello;
protected final Channel channel;
+ private final @NonNegative int maximumIncomingChunkSize;
private final long connectionTimeoutMillis;
private final Promise<S> promise;
private final L sessionListener;
private State state = State.IDLE;
protected AbstractNetconfSessionNegotiator(final NetconfHelloMessage hello, final Promise<S> 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<S> 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() {
replaceChannelHandler(channel, AbstractChannelInitializer.NETCONF_MESSAGE_FRAME_ENCODER,
FramingMechanismHandlerFactory.createHandler(FramingMechanism.CHUNK));
replaceChannelHandler(channel, AbstractChannelInitializer.NETCONF_MESSAGE_AGGREGATOR,
- new NetconfChunkAggregator(DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE));
+ new NetconfChunkAggregator(maximumIncomingChunkSize));
}
private boolean shouldUseChunkFraming(final Document doc) {