X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fclient%2FNetconfClientDispatcher.java;h=37e29876f304b620e33d40490e3a9890855633c4;hb=b80124e3f7b11cf2f5e5bd4a6b033d855ff4d0d4;hp=6ac57a88c9f4750513d8be139354f78abd5575a6;hpb=c73c1861af3d5eaab53843a82f021ccedac4a0f0;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 6ac57a88c9..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,93 +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 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 java.io.Closeable; -import java.net.InetSocketAddress; -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.AbstractChannelInitializer; -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 org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NetconfClientDispatcher extends AbstractDispatcher implements Closeable { - - private static final Logger logger = LoggerFactory.getLogger(NetconfClient.class); - - private final NetconfClientSessionNegotiatorFactory negotatorFactory; - private final HashedWheelTimer timer; - - public NetconfClientDispatcher(EventLoopGroup bossGroup, EventLoopGroup workerGroup) { - super(bossGroup, workerGroup); - timer = new HashedWheelTimer(); - this.negotatorFactory = new NetconfClientSessionNegotiatorFactory(timer); - } - - 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 ClientChannelInitializer( negotatorFactory, sessionListener).initialize(ch, promise); - } - }); - } - - private static class ClientChannelInitializer extends AbstractChannelInitializer { - - private final NetconfClientSessionNegotiatorFactory negotiatorFactory; - private final NetconfClientSessionListener sessionListener; - - private ClientChannelInitializer(NetconfClientSessionNegotiatorFactory negotiatorFactory, - NetconfClientSessionListener sessionListener) { - this.negotiatorFactory = negotiatorFactory; - this.sessionListener = sessionListener; - } +import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguration; +import org.opendaylight.controller.netconf.client.conf.NetconfReconnectingClientConfiguration; - @Override - public void initialize(SocketChannel ch, Promise promise) { - super.initialize(ch,promise); - } +public interface NetconfClientDispatcher { - @Override - protected void initializeAfterDecoder(SocketChannel ch, Promise promise) { - ch.pipeline().addLast("negotiator", negotiatorFactory.getSessionNegotiator(new SessionListenerFactory() { - @Override - public SessionListener getSessionListener() { - return sessionListener; - } - }, ch, promise)); - } + /** + * + * 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); - } - @Override - public void close() { - try { - timer.stop(); - } catch (Exception e) { - logger.debug("Ignoring exception while closing {}", timer, e); - } - } + Future createReconnectingClient(NetconfReconnectingClientConfiguration clientConfiguration); }