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%2FNetconfClientSessionNegotiator.java;h=bb6ea61a25b5fa51e56af04af1b01f533205df18;hb=1895c1473b803a53ad5e2a092c4dacb4ffed2ee2;hp=0c5935b57162b44354a0db08a734886d18bd386a;hpb=87837c5398976e1f44418e9f161efea9d5fa4e7c;p=controller.git diff --git a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiator.java b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiator.java index 0c5935b571..bb6ea61a25 100644 --- a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiator.java +++ b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiator.java @@ -8,22 +8,24 @@ package org.opendaylight.controller.netconf.client; +import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.Timer; +import io.netty.util.concurrent.Promise; import java.util.Collection; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; - import org.opendaylight.controller.netconf.api.NetconfClientSessionPreferences; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfMessage; -import org.opendaylight.controller.netconf.util.AbstractChannelInitializer; -import org.opendaylight.controller.netconf.util.AbstractNetconfSessionNegotiator; +import org.opendaylight.controller.netconf.nettyutil.AbstractChannelInitializer; +import org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSessionNegotiator; +import org.opendaylight.controller.netconf.nettyutil.handler.exi.NetconfStartExiMessage; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessage; import org.opendaylight.controller.netconf.util.messages.NetconfMessageUtil; -import org.opendaylight.controller.netconf.util.messages.NetconfStartExiMessage; import org.opendaylight.controller.netconf.util.xml.XMLNetconfUtil; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.util.xml.XmlUtil; @@ -33,10 +35,6 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import io.netty.channel.Channel; -import io.netty.util.Timer; -import io.netty.util.concurrent.Promise; - public class NetconfClientSessionNegotiator extends AbstractNetconfSessionNegotiator { @@ -69,7 +67,7 @@ public class NetconfClientSessionNegotiator extends tryToInitiateExi(session, startExiMessage); // Exi is not supported, release session immediately } else { - logger.debug("Netconf session {} isn't capable using exi.", session); + logger.debug("Netconf session {} isn't capable of using exi.", session); negotiationSuccessful(session); } } @@ -80,16 +78,18 @@ public class NetconfClientSessionNegotiator extends * @param startExiMessage */ void tryToInitiateExi(final NetconfClientSession session, final NetconfStartExiMessage startExiMessage) { + channel.pipeline().addAfter(AbstractChannelInitializer.NETCONF_MESSAGE_DECODER, + ExiConfirmationInboundHandler.EXI_CONFIRMED_HANDLER, + new ExiConfirmationInboundHandler(session, startExiMessage)); + session.sendMessage(startExiMessage).addListener(new ChannelFutureListener() { @Override public void operationComplete(final ChannelFuture f) { if (!f.isSuccess()) { logger.warn("Failed to send start-exi message {} on session {}", startExiMessage, this, f.cause()); + channel.pipeline().remove(ExiConfirmationInboundHandler.EXI_CONFIRMED_HANDLER); } else { logger.trace("Start-exi message {} sent to socket on session {}", startExiMessage, this); - channel.pipeline().addAfter( - AbstractChannelInitializer.NETCONF_MESSAGE_DECODER, ExiConfirmationInboundHandler.EXI_CONFIRMED_HANDLER, - new ExiConfirmationInboundHandler(session, startExiMessage)); } } });