package org.opendaylight.controller.netconf.client;
import io.netty.channel.Channel;
-import org.opendaylight.controller.netconf.api.NetconfSession;
-import org.opendaylight.protocol.framework.SessionListener;
+import java.util.Collection;
+import org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession;
+import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec;
+import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXIToMessageDecoder;
+import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToEXIEncoder;
+import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToXMLEncoder;
+import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToMessageDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Collection;
-
-public class NetconfClientSession extends NetconfSession {
+public class NetconfClientSession extends AbstractNetconfSession<NetconfClientSession, NetconfClientSessionListener> {
private static final Logger logger = LoggerFactory.getLogger(NetconfClientSession.class);
private final Collection<String> capabilities;
- public NetconfClientSession(SessionListener sessionListener, Channel channel, long sessionId,
+ public NetconfClientSession(NetconfClientSessionListener sessionListener, Channel channel, long sessionId,
Collection<String> capabilities) {
- super(sessionListener,channel,sessionId);
+ super(sessionListener, channel, sessionId);
this.capabilities = capabilities;
logger.debug("Client Session {} created", toString());
}
return capabilities;
}
- public Channel getChannel(){
- return channel;
+ @Override
+ protected NetconfClientSession thisInstance() {
+ return this;
}
+ @Override
+ 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 void stopExiCommunication() {
+ // TODO never used, Netconf client does not support stop-exi
+ replaceMessageDecoder(new NetconfXMLToMessageDecoder());
+ replaceMessageEncoder(new NetconfMessageToXMLEncoder());
+ }
}