Teach netconf-impl about maximum incoming chunk size
[netconf.git] / netconf / netconf-impl / src / main / java / org / opendaylight / netconf / impl / NetconfServerSessionNegotiatorFactoryBuilder.java
index 1f83e1559e8b7ae255fb24caa84698855e7fe646..03d4687c93e3317b72c425d3143828cb5a4f1b8b 100644 (file)
@@ -5,14 +5,17 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.netconf.impl;
 
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Objects.requireNonNull;
+
 import io.netty.util.Timer;
 import java.util.Set;
+import org.checkerframework.checker.index.qual.NonNegative;
 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
+import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
 
 public class NetconfServerSessionNegotiatorFactoryBuilder {
     private Timer timer;
@@ -21,6 +24,8 @@ public class NetconfServerSessionNegotiatorFactoryBuilder {
     private long connectionTimeoutMillis;
     private NetconfMonitoringService monitoringService;
     private Set<String> baseCapabilities;
+    private @NonNegative int maximumIncomingChunkSize =
+        AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE;
 
     public NetconfServerSessionNegotiatorFactoryBuilder() {
     }
@@ -35,7 +40,8 @@ public class NetconfServerSessionNegotiatorFactoryBuilder {
         return this;
     }
 
-    public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService(final NetconfOperationServiceFactory aggregatedOpService) {
+    public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService(
+            final NetconfOperationServiceFactory aggregatedOpService) {
         this.aggregatedOpService = aggregatedOpService;
         return this;
     }
@@ -45,7 +51,8 @@ public class NetconfServerSessionNegotiatorFactoryBuilder {
         return this;
     }
 
-    public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService(final NetconfMonitoringService monitoringService) {
+    public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService(
+            final NetconfMonitoringService monitoringService) {
         this.monitoringService = monitoringService;
         return this;
     }
@@ -55,20 +62,28 @@ public class NetconfServerSessionNegotiatorFactoryBuilder {
         return this;
     }
 
+    public NetconfServerSessionNegotiatorFactoryBuilder setMaximumIncomingChunkSize(
+            final @NonNegative int maximumIncomingChunkSize) {
+        checkArgument(maximumIncomingChunkSize > 0);
+        this.maximumIncomingChunkSize = maximumIncomingChunkSize;
+        return this;
+    }
 
     public NetconfServerSessionNegotiatorFactory build() {
         validate();
-        return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider, connectionTimeoutMillis, monitoringService, baseCapabilities);
+        return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider,
+                connectionTimeoutMillis, monitoringService, baseCapabilities, maximumIncomingChunkSize);
     }
 
-
     private void validate() {
-        Preconditions.checkNotNull(timer, "timer not initialized");
-        Preconditions.checkNotNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized");
-        Preconditions.checkNotNull(idProvider, "SessionIdProvider not initialized");
-        Preconditions.checkArgument(connectionTimeoutMillis > 0, "connection time out <=0");
-        Preconditions.checkNotNull(monitoringService, "NetconfMonitoringService not initialized");
+        requireNonNull(timer, "timer not initialized");
+        requireNonNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized");
+        requireNonNull(idProvider, "SessionIdProvider not initialized");
+        checkArgument(connectionTimeoutMillis > 0, "connection time out <=0");
+        requireNonNull(monitoringService, "NetconfMonitoringService not initialized");
 
-        baseCapabilities = (baseCapabilities == null) ? NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES : baseCapabilities;
+        if (baseCapabilities == null) {
+            baseCapabilities = NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES;
+        }
     }
 }