X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fclient%2FNetconfClientDispatcherImpl.java;h=e1754111b6f79c98cebd99656a219db4157b254c;hb=7bf7d3fd39c6966a2414d4ca6fd77d195021c1f8;hp=2f76f2b8b7ee4ae0815c1a633b536b8b2dcfe4ae;hpb=587f3257393e79c720f88d41b8f3f65a600d32df;p=netconf.git diff --git a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java index 2f76f2b8b7..e1754111b6 100644 --- a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java +++ b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientDispatcherImpl.java @@ -7,34 +7,46 @@ */ package org.opendaylight.netconf.client; +import static java.util.Objects.requireNonNull; + import io.netty.channel.EventLoopGroup; import io.netty.util.Timer; import io.netty.util.concurrent.Future; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import javax.inject.Inject; +import javax.inject.Singleton; import org.opendaylight.netconf.client.conf.NetconfClientConfiguration; import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfiguration; import org.opendaylight.netconf.nettyutil.AbstractNetconfDispatcher; +import org.opendaylight.netconf.nettyutil.ReconnectFuture; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Singleton +@Component(immediate = true, service = NetconfClientDispatcher.class, property = "type=netconf-client-dispatcher") public class NetconfClientDispatcherImpl extends AbstractNetconfDispatcher implements NetconfClientDispatcher { - private static final Logger LOG = LoggerFactory.getLogger(NetconfClientDispatcherImpl.class); private final Timer timer; - public NetconfClientDispatcherImpl(final EventLoopGroup bossGroup, final EventLoopGroup workerGroup, - final Timer timer) { + @Inject + @Activate + public NetconfClientDispatcherImpl(@Reference(target = "(type=global-boss-group)") final EventLoopGroup bossGroup, + @Reference(target = "(type=global-worker-group)") final EventLoopGroup workerGroup, + @Reference(target = "(type=global-timer)") final Timer timer) { super(bossGroup, workerGroup); - this.timer = timer; + this.timer = requireNonNull(timer); } - protected Timer getTimer() { + protected final Timer getTimer() { return timer; } @@ -53,7 +65,7 @@ public class NetconfClientDispatcherImpl } @Override - public Future createReconnectingClient(final NetconfReconnectingClientConfiguration clientConfiguration) { + public ReconnectFuture createReconnectingClient(final NetconfReconnectingClientConfiguration clientConfiguration) { switch (clientConfiguration.getProtocol()) { case TCP: return createReconnectingTcpClient(clientConfiguration); @@ -70,39 +82,37 @@ public class NetconfClientDispatcherImpl LOG.debug("Creating TCP client with configuration: {}", currentConfiguration); return super.createClient(currentConfiguration.getAddress(), currentConfiguration.getReconnectStrategy(), (ch, promise) -> new TcpClientChannelInitializer(getNegotiatorFactory(currentConfiguration), - currentConfiguration - .getSessionListener()).initialize(ch, promise)); + currentConfiguration.getSessionListener()).initialize(ch, promise)); } - private Future createReconnectingTcpClient( + private ReconnectFuture createReconnectingTcpClient( final NetconfReconnectingClientConfiguration currentConfiguration) { LOG.debug("Creating reconnecting TCP client with configuration: {}", currentConfiguration); final TcpClientChannelInitializer init = new TcpClientChannelInitializer(getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener()); - return super.createReconnectingClient(currentConfiguration.getAddress(), currentConfiguration - .getConnectStrategyFactory(), - currentConfiguration.getReconnectStrategy(), init::initialize); + return super.createReconnectingClient(currentConfiguration.getAddress(), + currentConfiguration.getConnectStrategyFactory(), init::initialize); } private Future createSshClient(final NetconfClientConfiguration currentConfiguration) { LOG.debug("Creating SSH client with configuration: {}", currentConfiguration); return super.createClient(currentConfiguration.getAddress(), currentConfiguration.getReconnectStrategy(), (ch, sessionPromise) -> new SshClientChannelInitializer(currentConfiguration.getAuthHandler(), - getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener()) - .initialize(ch, sessionPromise)); + getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener(), + currentConfiguration.getSshClient()).initialize(ch, sessionPromise)); } - private Future createReconnectingSshClient( + private ReconnectFuture createReconnectingSshClient( final NetconfReconnectingClientConfiguration currentConfiguration) { LOG.debug("Creating reconnecting SSH client with configuration: {}", currentConfiguration); final SshClientChannelInitializer init = new SshClientChannelInitializer(currentConfiguration.getAuthHandler(), - getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener()); + getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener(), + currentConfiguration.getSshClient()); - return super.createReconnectingClient(currentConfiguration.getAddress(), currentConfiguration - .getConnectStrategyFactory(), currentConfiguration.getReconnectStrategy(), - init::initialize); + return super.createReconnectingClient(currentConfiguration.getAddress(), + currentConfiguration.getConnectStrategyFactory(), init::initialize); } private Future createTlsClient(final NetconfClientConfiguration currentConfiguration) { @@ -113,32 +123,31 @@ public class NetconfClientDispatcherImpl .initialize(ch, sessionPromise)); } - private Future createReconnectingTlsClient( + private ReconnectFuture createReconnectingTlsClient( final NetconfReconnectingClientConfiguration currentConfiguration) { LOG.debug("Creating reconnecting TLS client with configuration: {}", currentConfiguration); final TlsClientChannelInitializer init = new TlsClientChannelInitializer( currentConfiguration.getSslHandlerFactory(), getNegotiatorFactory(currentConfiguration), currentConfiguration.getSessionListener()); - return super.createReconnectingClient(currentConfiguration.getAddress(), currentConfiguration - .getConnectStrategyFactory(), currentConfiguration.getReconnectStrategy(), - init::initialize); + return super.createReconnectingClient(currentConfiguration.getAddress(), + currentConfiguration.getConnectStrategyFactory(), init::initialize); } protected NetconfClientSessionNegotiatorFactory getNegotiatorFactory(final NetconfClientConfiguration cfg) { final List odlHelloCapabilities = cfg.getOdlHelloCapabilities(); if (odlHelloCapabilities == null || odlHelloCapabilities.isEmpty()) { return new NetconfClientSessionNegotiatorFactory(timer, cfg.getAdditionalHeader(), - cfg.getConnectionTimeoutMillis()); - } else { - // LinkedHashSet since perhaps the device cares about order of hello message capabilities. - // This allows user control of the order while complying with the existing interface. - final Set stringCapabilities = new LinkedHashSet<>(); - for (final Uri uri : odlHelloCapabilities) { - stringCapabilities.add(uri.getValue()); - } - return new NetconfClientSessionNegotiatorFactory(timer, cfg.getAdditionalHeader(), - cfg.getConnectionTimeoutMillis(), stringCapabilities); + cfg.getConnectionTimeoutMillis(), cfg.getMaximumIncomingChunkSize()); + } + + // LinkedHashSet since perhaps the device cares about order of hello message capabilities. + // This allows user control of the order while complying with the existing interface. + final Set stringCapabilities = new LinkedHashSet<>(); + for (final Uri uri : odlHelloCapabilities) { + stringCapabilities.add(uri.getValue()); } + return new NetconfClientSessionNegotiatorFactory(timer, cfg.getAdditionalHeader(), + cfg.getConnectionTimeoutMillis(), stringCapabilities); } }