NetconfClientSessionNegotiator(final NetconfHelloMessage hello, final NetconfStartExiMessage startExi,
final Promise<NetconfClientSession> 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;
}
NetconfServerSessionNegotiator(final NetconfHelloMessage hello, final long sessionId,
final Promise<NetconfServerSession> 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;
}
*/
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) {
TestSessionNegotiator(final NetconfHelloMessage hello, final Promise<TestingNetconfSession> promise,
final Channel channel, final Timer timer,
final NetconfSessionListener<TestingNetconfSession> sessionListener, final long connectionTimeoutMillis) {
- super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis);
+ super(hello, promise, channel, timer, sessionListener, connectionTimeoutMillis, 16384);
}
@Override