synchronized void handleNotification(final NetconfMessage notification) {
if(passNotifications) {
- passNotification(messageTransformer.toNotification(notification));
+ passNotification(transformNotification(notification));
} else {
queueNotification(notification);
}
passNotifications = true;
for (final NetconfMessage cachedNotification : queue) {
- passNotification(messageTransformer.toNotification(cachedNotification));
+ passNotification(transformNotification(cachedNotification));
}
queue.clear();
}
+ private CompositeNode transformNotification(final NetconfMessage cachedNotification) {
+ final CompositeNode parsedNotification = messageTransformer.toNotification(cachedNotification);
+ Preconditions.checkNotNull(parsedNotification, "%s: Unable to parse received notification: %s", id, cachedNotification);
+ return parsedNotification;
+ }
+
private void queueNotification(final NetconfMessage notification) {
Preconditions.checkState(passNotifications == false);
private synchronized void passNotification(final CompositeNode parsedNotification) {
logger.debug("{}: Forwarding notification {}", id, parsedNotification);
- Preconditions.checkNotNull(parsedNotification);
if(filter == null || filter.filterNotification(parsedNotification).isPresent()) {
salFacade.onNotification(parsedNotification);
this.filter = filter;
}
+ synchronized void onRemoteSchemaDown() {
+ queue.clear();
+ passNotifications = false;
+ }
+
static interface NotificationFilter {
Optional<CompositeNode> filterNotification(CompositeNode notification);