2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.server;
10 import static com.google.common.base.Preconditions.checkArgument;
11 import static java.util.Objects.requireNonNull;
13 import io.netty.util.Timer;
15 import org.checkerframework.checker.index.qual.NonNegative;
16 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
17 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
18 import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
19 import org.opendaylight.netconf.server.api.SessionIdProvider;
21 public class NetconfServerSessionNegotiatorFactoryBuilder {
23 private SessionIdProvider idProvider;
24 private NetconfOperationServiceFactory aggregatedOpService;
25 private long connectionTimeoutMillis;
26 private NetconfMonitoringService monitoringService;
27 private Set<String> baseCapabilities;
28 private @NonNegative int maximumIncomingChunkSize =
29 AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE;
31 public NetconfServerSessionNegotiatorFactoryBuilder() {
34 public NetconfServerSessionNegotiatorFactoryBuilder setTimer(final Timer timer) {
39 public NetconfServerSessionNegotiatorFactoryBuilder setIdProvider(final SessionIdProvider idProvider) {
40 this.idProvider = idProvider;
44 public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService(
45 final NetconfOperationServiceFactory aggregatedOpService) {
46 this.aggregatedOpService = aggregatedOpService;
50 public NetconfServerSessionNegotiatorFactoryBuilder setConnectionTimeoutMillis(final long connectionTimeoutMillis) {
51 this.connectionTimeoutMillis = connectionTimeoutMillis;
55 public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService(
56 final NetconfMonitoringService monitoringService) {
57 this.monitoringService = monitoringService;
61 public NetconfServerSessionNegotiatorFactoryBuilder setBaseCapabilities(final Set<String> baseCapabilities) {
62 this.baseCapabilities = baseCapabilities;
66 public NetconfServerSessionNegotiatorFactoryBuilder setMaximumIncomingChunkSize(
67 final @NonNegative int maximumIncomingChunkSize) {
68 checkArgument(maximumIncomingChunkSize > 0);
69 this.maximumIncomingChunkSize = maximumIncomingChunkSize;
73 public NetconfServerSessionNegotiatorFactory build() {
75 return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider,
76 connectionTimeoutMillis, monitoringService, baseCapabilities, maximumIncomingChunkSize);
79 private void validate() {
80 requireNonNull(timer, "timer not initialized");
81 requireNonNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized");
82 requireNonNull(idProvider, "SessionIdProvider not initialized");
83 checkArgument(connectionTimeoutMillis > 0, "connection time out <=0");
84 requireNonNull(monitoringService, "NetconfMonitoringService not initialized");
86 if (baseCapabilities == null) {
87 baseCapabilities = NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES;