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%2FNetconfClientSession.java;h=f4efb1fc7dc9bf56cd3176c769f72c312ee351d2;hb=87e068952fe9207ccccbcebdaac2de09743e2403;hp=f0180cf78d74a8c47a9697f91480c474601a9759;hpb=a92d9d6a21a0f6ca8d2153795721f500eaf29ee9;p=controller.git diff --git a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java index f0180cf78d..f4efb1fc7d 100644 --- a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java +++ b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java @@ -8,88 +8,51 @@ package org.opendaylight.controller.netconf.client; -import io.netty.channel.Channel; -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.xml.XmlUtil; -import org.opendaylight.protocol.framework.SessionListener; +import java.util.Collection; + +import org.opendaylight.controller.netconf.util.AbstractNetconfSession; +import org.opendaylight.controller.netconf.util.handler.NetconfEXICodec; +import org.opendaylight.controller.netconf.util.handler.NetconfEXIToMessageDecoder; +import org.opendaylight.controller.netconf.util.handler.NetconfMessageToEXIEncoder; +import org.opendaylight.controller.netconf.util.handler.NetconfMessageToXMLEncoder; +import org.opendaylight.controller.netconf.util.handler.NetconfXMLToMessageDecoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.util.Collection; - -public class NetconfClientSession extends NetconfSession { +import io.netty.channel.Channel; - private final SessionListener sessionListener; - private final long sessionId; - private final Channel channel; +public final class NetconfClientSession extends AbstractNetconfSession { private static final Logger logger = LoggerFactory.getLogger(NetconfClientSession.class); private final Collection capabilities; - private boolean up; - public NetconfClientSession(SessionListener sessionListener, Channel channel, long sessionId, + public NetconfClientSession(NetconfClientSessionListener sessionListener, Channel channel, long sessionId, Collection capabilities) { - this.sessionListener = sessionListener; - this.channel = channel; - this.sessionId = sessionId; + super(sessionListener, channel, sessionId); this.capabilities = capabilities; logger.debug("Client Session {} created", toString()); } - @Override - public void close() { - channel.close(); - sessionListener.onSessionTerminated(this, new NetconfTerminationReason("Client Session closed")); - } - - @Override - protected void handleMessage(NetconfMessage netconfMessage) { - logger.debug("Client Session {} received message {}", toString(), - XmlUtil.toString(netconfMessage.getDocument())); - sessionListener.onMessage(this, netconfMessage); - } - - @Override - public void sendMessage(NetconfMessage netconfMessage) { - channel.writeAndFlush(netconfMessage); + public Collection getServerCapabilities() { + return capabilities; } @Override - protected void endOfInput() { - logger.debug("Client Session {} end of input detected while session was in state {}", toString(), isUp() ? "up" - : "initialized"); - if (isUp()) { - this.sessionListener.onSessionDown(this, new IOException("End of input detected. Close the session.")); - } + protected NetconfClientSession thisInstance() { + return this; } @Override - protected void sessionUp() { - logger.debug("Client Session {} up", toString()); - sessionListener.onSessionUp(this); - this.up = true; + protected void addExiHandlers(NetconfEXICodec exiCodec) { + // TODO used only in negotiator, client supports only auto start-exi + replaceMessageDecoder(new NetconfEXIToMessageDecoder(exiCodec)); + replaceMessageEncoder(new NetconfMessageToEXIEncoder(exiCodec)); } @Override - public String toString() { - final StringBuffer sb = new StringBuffer("ClientNetconfSession{"); - sb.append("sessionId=").append(sessionId); - sb.append('}'); - return sb.toString(); - } - - public boolean isUp() { - return up; - } - - public long getSessionId() { - return sessionId; - } - - public Collection getServerCapabilities() { - return capabilities; + public void stopExiCommunication() { + // TODO never used, Netconf client does not support stop-exi + replaceMessageDecoder(new NetconfXMLToMessageDecoder()); + replaceMessageEncoder(new NetconfMessageToXMLEncoder()); } }