X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fnetconf%2Fnetconf-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fclient%2FNetconfClientDispatcher.java;h=37e29876f304b620e33d40490e3a9890855633c4;hb=87e068952fe9207ccccbcebdaac2de09743e2403;hp=6fc4da026f38acc3add7538f3c172e2c6ee01a0f;hpb=13efd0b8e167e8aadd531b5ec0e72572a72bc249;p=controller.git diff --git a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcher.java b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcher.java index 6fc4da026f..37e29876f3 100644 --- a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcher.java +++ b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcher.java @@ -1,86 +1,26 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * 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.controller.netconf.client; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.util.HashedWheelTimer; import io.netty.util.concurrent.Future; -import io.netty.util.concurrent.Promise; -import org.opendaylight.controller.netconf.api.NetconfMessage; -import org.opendaylight.controller.netconf.api.NetconfSession; -import org.opendaylight.controller.netconf.api.NetconfTerminationReason; -import org.opendaylight.controller.netconf.util.AbstractSslChannelInitializer; -import org.opendaylight.protocol.framework.AbstractDispatcher; -import org.opendaylight.protocol.framework.ReconnectStrategy; -import org.opendaylight.protocol.framework.SessionListener; -import org.opendaylight.protocol.framework.SessionListenerFactory; - -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; -import java.net.InetSocketAddress; - -public class NetconfClientDispatcher extends AbstractDispatcher { - - private final Optional maybeContext; - private final NetconfClientSessionNegotiatorFactory negotatorFactory; - - public NetconfClientDispatcher(final Optional maybeContext, EventLoopGroup bossGroup, EventLoopGroup workerGroup) { - super(bossGroup, workerGroup); - this.maybeContext = Preconditions.checkNotNull(maybeContext); - this.negotatorFactory = new NetconfClientSessionNegotiatorFactory(new HashedWheelTimer()); - } - - public Future createClient(InetSocketAddress address, - final NetconfClientSessionListener sessionListener, ReconnectStrategy strat) { - - return super.createClient(address, strat, new PipelineInitializer() { - - @Override - public void initializeChannel(final SocketChannel ch, final Promise promise) { - initialize(ch, promise); - } - - private void initialize(SocketChannel ch, Promise promise) { - new ClientSslChannelInitializer(maybeContext, negotatorFactory, sessionListener).initialize(ch, promise); - } - }); - } - - private static class ClientSslChannelInitializer extends AbstractSslChannelInitializer { - - private final NetconfClientSessionNegotiatorFactory negotiatorFactory; - private final NetconfClientSessionListener sessionListener; - - private ClientSslChannelInitializer(Optional maybeContext, - NetconfClientSessionNegotiatorFactory negotiatorFactory, NetconfClientSessionListener sessionListener) { - super(maybeContext); - this.negotiatorFactory = negotiatorFactory; - this.sessionListener = sessionListener; - } +import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguration; +import org.opendaylight.controller.netconf.client.conf.NetconfReconnectingClientConfiguration; - @Override - protected void initializeAfterDecoder(SocketChannel ch, Promise promise) { - ch.pipeline().addLast("negotiator", negotiatorFactory.getSessionNegotiator(new SessionListenerFactory() { - @Override - public SessionListener getSessionListener() { - return sessionListener; - } - }, ch, promise)); - } +public interface NetconfClientDispatcher { - @Override - protected void initSslEngine(SSLEngine sslEngine) { - sslEngine.setUseClientMode(true); - } - } + /** + * + * Create netconf client. Network communication has to be set up based on network protocol specified in clientConfiguration + * + * @param clientConfiguration + * @return netconf client based on provided configuration + */ + Future createClient(NetconfClientConfiguration clientConfiguration); + Future createReconnectingClient(NetconfReconnectingClientConfiguration clientConfiguration); }