+ @Override
+ public void onDataTreeChanged(@NonNull Collection<DataTreeModification<Link>> changes) {
+ for (DataTreeModification<Link> modification : changes) {
+ switch (modification.getRootNode().getModificationType()) {
+ case WRITE:
+ break;
+ case SUBTREE_MODIFIED:
+ // NOOP
+ break;
+ case DELETE:
+ processLinkDeleted(modification.getRootNode());
+ break;
+ default:
+ LOG.error("Unhandled modification type: {}", modification.getRootNode().getModificationType());
+ }
+ }
+ }
+
+ @VisibleForTesting
+ public boolean isLinkToDateEmpty() {
+ return linkToDate.isEmpty();
+ }
+
+ @Override
+ public void onPropertyChanged(@NonNull final String propertyName, @NonNull final String propertyValue) {
+ final TopologyLLDPDiscoveryProperty lldpDiscoveryProperty = TopologyLLDPDiscoveryProperty.forValue(
+ propertyName);
+ if (lldpDiscoveryProperty != null) {
+ switch (lldpDiscoveryProperty) {
+ case LLDP_SECURE_KEY:
+ case TOPOLOGY_LLDP_INTERVAL:
+ case TOPOLOGY_LLDP_EXPIRATION_INTERVAL:
+ LOG.warn("Runtime update not supported for property {}", lldpDiscoveryProperty);
+ break;
+ default:
+ LOG.warn("No topology lldp discovery property found.");
+ break;
+ }
+ }
+ }
+
+ protected boolean isLinkPresent(final LinkDiscovered linkDiscovered) {
+ return linkToDate.containsKey(linkDiscovered);
+ }
+
+ private void processLinkDeleted(DataObjectModification<Link> rootNode) {
+ Link link = rootNode.getDataBefore();
+ LOG.trace("Removing link {} from linkToDate cache", link);
+ LinkDiscovered linkDiscovered = LLDPDiscoveryUtils.toLLDPLinkDiscovered(link);
+ linkToDate.remove(linkDiscovered);
+ }