import com.google.common.collect.ImmutableSet;
import io.netty.channel.Channel;
-import io.netty.util.Timer;
import io.netty.util.concurrent.Promise;
import java.util.Optional;
import java.util.Set;
import org.checkerframework.checker.index.qual.NonNegative;
+import org.opendaylight.netconf.api.CapabilityURN;
import org.opendaylight.netconf.api.NetconfSessionListenerFactory;
import org.opendaylight.netconf.api.messages.HelloMessage;
import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
-import org.opendaylight.netconf.api.xml.XmlNetconfConstants;
-import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
-import org.opendaylight.netconf.nettyutil.NetconfSessionNegotiatorFactory;
+import org.opendaylight.netconf.common.NetconfTimer;
+import org.opendaylight.netconf.nettyutil.NetconfSessionNegotiator;
import org.opendaylight.netconf.nettyutil.handler.exi.EXIParameters;
-import org.opendaylight.netconf.nettyutil.handler.exi.NetconfStartExiMessage;
+import org.opendaylight.netconf.nettyutil.handler.exi.NetconfStartExiMessageProvider;
import org.opendaylight.netconf.shaded.exificient.core.CodingMode;
import org.opendaylight.netconf.shaded.exificient.core.FidelityOptions;
import org.opendaylight.netconf.shaded.exificient.core.exceptions.UnsupportedOption;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NetconfClientSessionNegotiatorFactory
- implements NetconfSessionNegotiatorFactory<NetconfClientSession, NetconfClientSessionListener> {
-
+public final class NetconfClientSessionNegotiatorFactory {
public static final Set<String> EXI_CLIENT_CAPABILITIES = ImmutableSet.of(
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0,
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1,
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_CAPABILITY_EXI_1_0);
+ CapabilityURN.BASE,
+ CapabilityURN.BASE_1_1,
+ CapabilityURN.EXI);
public static final Set<String> LEGACY_EXI_CLIENT_CAPABILITIES = ImmutableSet.of(
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0,
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_CAPABILITY_EXI_1_0);
+ CapabilityURN.BASE,
+ CapabilityURN.EXI);
public static final Set<String> DEFAULT_CLIENT_CAPABILITIES = ImmutableSet.of(
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0,
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_1);
+ CapabilityURN.BASE,
+ CapabilityURN.BASE_1_1);
- public static final Set<String> LEGACY_FRAMING_CLIENT_CAPABILITIES = ImmutableSet.of(
- XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0);
+ public static final Set<String> LEGACY_FRAMING_CLIENT_CAPABILITIES = ImmutableSet.of(CapabilityURN.BASE);
private static final Logger LOG = LoggerFactory.getLogger(NetconfClientSessionNegotiatorFactory.class);
private static final String START_EXI_MESSAGE_ID = "default-start-exi";
private final @NonNegative int maximumIncomingChunkSize;
private final Set<String> clientCapabilities;
private final long connectionTimeoutMillis;
- private final Timer timer;
+ private final NetconfTimer timer;
private final EXIParameters options;
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis) {
this(timer, additionalHeader, connectionTimeoutMillis, DEFAULT_OPTIONS);
}
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis,
final @NonNegative int maximumIncomingChunkSize) {
maximumIncomingChunkSize);
}
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis, final Set<String> capabilities) {
this(timer, additionalHeader, connectionTimeoutMillis, DEFAULT_OPTIONS, capabilities);
}
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis, final EXIParameters exiOptions) {
this(timer, additionalHeader, connectionTimeoutMillis, exiOptions, EXI_CLIENT_CAPABILITIES);
}
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis, final EXIParameters exiOptions,
final Set<String> capabilities) {
this(timer, additionalHeader, connectionTimeoutMillis, exiOptions, capabilities,
- AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE);
+ NetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE);
}
- public NetconfClientSessionNegotiatorFactory(final Timer timer,
+ public NetconfClientSessionNegotiatorFactory(final NetconfTimer timer,
final Optional<NetconfHelloMessageAdditionalHeader> additionalHeader,
final long connectionTimeoutMillis, final EXIParameters exiOptions,
final Set<String> capabilities,
return connectionTimeoutMillis;
}
- @Override
+ /**
+ * Create a new negotiator attached to a channel, which will notify
+ * a promise once the negotiation completes.
+ *
+ * @param channel Underlying channel
+ * @param promise Promise to be notified
+ * @return new negotiator instance
+ */
public NetconfClientSessionNegotiator getSessionNegotiator(
final NetconfSessionListenerFactory<NetconfClientSessionListener> sessionListenerFactory,
final Channel channel, final Promise<NetconfClientSession> promise) {
return new NetconfClientSessionNegotiator(
HelloMessage.createClientHello(clientCapabilities, additionalHeader),
- NetconfStartExiMessage.create(options, START_EXI_MESSAGE_ID), promise, channel, timer,
+ NetconfStartExiMessageProvider.create(options, START_EXI_MESSAGE_ID), promise, channel, timer,
sessionListenerFactory.getSessionListener(), connectionTimeoutMillis, maximumIncomingChunkSize);
}
}