releaseNodeState() should not care about the PCEPSession
[bgpcep.git] / pcep / topology / topology-provider / src / main / java / org / opendaylight / bgpcep / pcep / topology / provider / ServerSessionManager.java
index c2e21ccd796cec0a3ff379580c768768e187efcc..20440f3a78e94a20502528b97f299b68980d94ec 100644 (file)
@@ -24,12 +24,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.bgpcep.pcep.server.PceServerProvider;
-import org.opendaylight.bgpcep.pcep.topology.spi.stats.TopologySessionStatsRegistry;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.protocol.pcep.PCEPSession;
 import org.opendaylight.protocol.pcep.PCEPSessionListenerFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.PcepSessionState;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspArgs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.EnsureLspOperationalInput;
@@ -56,7 +55,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 // Non-final for testing
-class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessionRPCs, TopologySessionStatsRegistry {
+class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessionRPCs {
     private static final Logger LOG = LoggerFactory.getLogger(ServerSessionManager.class);
     private static final long DEFAULT_HOLD_STATE_NANOS = TimeUnit.MINUTES.toNanos(5);
 
@@ -72,17 +71,19 @@ class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessio
 
     private volatile short rpcTimeout;
 
+    private final GraphKey graphKey;
+
     ServerSessionManager(final KeyedInstanceIdentifier<Topology, TopologyKey> instanceIdentifier,
-            final PCEPTopologyProviderDependencies dependencies, final short rpcTimeout) {
+            final PCEPTopologyProviderDependencies dependencies, final short rpcTimeout, final GraphKey graphKey) {
         this.dependencies = requireNonNull(dependencies);
         topology = requireNonNull(instanceIdentifier);
         this.rpcTimeout = rpcTimeout;
+        this.graphKey = requireNonNull(graphKey);
     }
 
     // Initialize the operational view of the topology.
     final ListenableFuture<Boolean> start() {
         LOG.info("Creating PCEP Topology {}", topologyId());
-
         final var tx = dependencies.getDataBroker().newWriteOnlyTransaction();
         tx.put(LogicalDatastoreType.OPERATIONAL, topology, new TopologyBuilder()
             .withKey(topology.getKey())
@@ -112,7 +113,7 @@ class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessio
         // Register this new topology to PCE Server
         final PceServerProvider server = dependencies.getPceServerProvider();
         if (server != null) {
-            server.registerPcepTopology(topology);
+            server.registerPcepTopology(topology, graphKey);
         }
         return future;
     }
@@ -154,13 +155,13 @@ class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessio
         return future;
     }
 
-    final synchronized void releaseNodeState(final TopologyNodeState nodeState, final PCEPSession session,
+    final synchronized void releaseNodeState(final TopologyNodeState nodeState, final InetAddress peerAddress,
             final boolean persistNode) {
         if (isClosed.get()) {
             LOG.error("Session Manager has already been closed.");
             return;
         }
-        final NodeId nodeId = createNodeId(session.getRemoteAddress());
+        final NodeId nodeId = createNodeId(peerAddress);
         nodes.remove(nodeId);
         state.remove(nodeId);
         if (nodeState != null) {
@@ -273,14 +274,12 @@ class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessio
         }
     }
 
-    @Override
-    public final synchronized void bind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId,
+    final synchronized void bind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId,
             final PcepSessionState sessionState) {
         dependencies.getStateRegistry().bind(nodeId, sessionState);
     }
 
-    @Override
-    public final synchronized void unbind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId) {
+    final synchronized void unbind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId) {
         dependencies.getStateRegistry().unbind(nodeId);
     }