import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
-import java.util.Collections;
import java.util.List;
-import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import org.opendaylight.bgpcep.pcep.topology.provider.config.PCEPTopologyConfiguration;
import org.opendaylight.bgpcep.pcep.topology.provider.config.PCEPTopologyProviderDependencies;
import org.opendaylight.yangtools.concepts.ObjectRegistration;
public final class PCEPTopologyProvider extends DefaultTopologyReference {
- private static final String STATEFUL_NOT_DEFINED = "Stateful capability not defined, aborting PCEP Topology"
- + " Provider instantiation";
private final ServerSessionManager manager;
private final PCEPTopologyProviderDependencies dependenciesProvider;
private final PCEPTopologyConfiguration configDependencies;
private final InstructionScheduler scheduler;
+
private ObjectRegistration<NetworkTopologyPcepProgrammingService> network;
private ObjectRegistration<NetworkTopologyPcepService> element;
private Channel channel;
final InstructionScheduler scheduler, final PCEPTopologyConfiguration configDependencies) {
final List<PCEPCapability> capabilities = dependenciesProvider.getPCEPDispatcher()
.getPCEPSessionNegotiatorFactory().getPCEPSessionProposalFactory().getCapabilities();
- final Optional<PCEPCapability> statefulCapability = capabilities
- .stream()
- .filter(PCEPCapability::isStateful)
- .findAny();
-
- final TopologySessionListenerFactory listenerFactory = dependenciesProvider.getTopologySessionListenerFactory();
- if (!statefulCapability.isPresent()) {
- throw new IllegalStateException(STATEFUL_NOT_DEFINED);
+ if (capabilities.stream().filter(PCEPCapability::isStateful).findAny().isEmpty()) {
+ throw new IllegalStateException(
+ "Stateful capability not defined, aborting PCEP Topology Provider instantiation");
}
- final ServerSessionManager manager = new ServerSessionManager(dependenciesProvider, listenerFactory,
- configDependencies);
+ final ServerSessionManager manager = new ServerSessionManager(dependenciesProvider,
+ dependenciesProvider.getTopologySessionListenerFactory(), configDependencies);
return new PCEPTopologyProvider(configDependencies, dependenciesProvider, manager, scheduler);
}
public void instantiateServiceInstance() throws ExecutionException, InterruptedException {
- final RpcProviderService rpcRegistry = this.dependenciesProvider.getRpcProviderRegistry();
+ final RpcProviderService rpcRegistry = dependenciesProvider.getRpcProviderRegistry();
- this.element = requireNonNull(rpcRegistry
- .registerRpcImplementation(NetworkTopologyPcepService.class, new TopologyRPCs(this.manager),
- Collections.singleton(this.configDependencies.getTopology())));
+ element = requireNonNull(rpcRegistry.registerRpcImplementation(NetworkTopologyPcepService.class,
+ new TopologyRPCs(manager), Set.of(configDependencies.getTopology())));
- this.network = requireNonNull(rpcRegistry
- .registerRpcImplementation(NetworkTopologyPcepProgrammingService.class,
- new TopologyProgramming(this.scheduler, this.manager),
- Collections.singleton(this.configDependencies.getTopology())));
+ network = requireNonNull(rpcRegistry.registerRpcImplementation(NetworkTopologyPcepProgrammingService.class,
+ new TopologyProgramming(scheduler, manager), Set.of(configDependencies.getTopology())));
- this.manager.instantiateServiceInstance();
- final ChannelFuture channelFuture = this.dependenciesProvider.getPCEPDispatcher()
- .createServer(this.manager.getPCEPDispatcherDependencies());
+ manager.instantiateServiceInstance();
+ final ChannelFuture channelFuture = dependenciesProvider.getPCEPDispatcher()
+ .createServer(manager.getPCEPDispatcherDependencies());
channelFuture.get();
- this.channel = channelFuture.channel();
+ channel = channelFuture.channel();
}
public FluentFuture<? extends CommitInfo> closeServiceInstance() {
//FIXME return also channelClose once ListenableFuture implements wildcard
- this.channel.close().addListener((ChannelFutureListener) future ->
+ channel.close().addListener((ChannelFutureListener) future ->
checkArgument(future.isSuccess(), "Channel failed to close: %s", future.cause()));
- if (this.network != null) {
- this.network.close();
- this.network = null;
+ if (network != null) {
+ network.close();
+ network = null;
}
- if (this.element != null) {
- this.element.close();
- this.element = null;
+ if (element != null) {
+ element.close();
+ element = null;
}
- return this.manager.closeServiceInstance();
+ return manager.closeServiceInstance();
}
}
\ No newline at end of file