summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/main/java/io
diff options
context:
space:
mode:
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io')
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/InterfaceChangeNotificationProducer.java47
1 files changed, 29 insertions, 18 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/InterfaceChangeNotificationProducer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/InterfaceChangeNotificationProducer.java
index 44da8279c..1f94b06d9 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/InterfaceChangeNotificationProducer.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/InterfaceChangeNotificationProducer.java
@@ -25,7 +25,9 @@ import io.fd.honeycomb.notification.ManagedNotificationProducer;
import io.fd.honeycomb.notification.NotificationCollector;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.vpp.jvpp.VppBaseCallException;
-import io.fd.vpp.jvpp.core.dto.SwInterfaceEventNotification;
+import io.fd.vpp.jvpp.VppCallbackException;
+import io.fd.vpp.jvpp.core.callback.SwInterfaceEventCallback;
+import io.fd.vpp.jvpp.core.dto.SwInterfaceEvent;
import io.fd.vpp.jvpp.core.dto.WantInterfaceEvents;
import io.fd.vpp.jvpp.core.dto.WantInterfaceEventsReply;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
@@ -75,31 +77,40 @@ final class InterfaceChangeNotificationProducer implements ManagedNotificationPr
LOG.trace("Starting interface notifications");
enableDisableIfcNotifications(1);
LOG.debug("Interface notifications started successfully");
- notificationListenerReg = jvpp.getNotificationRegistry().registerSwInterfaceEventNotificationCallback(
- swInterfaceEventNotification -> {
- LOG.trace("Interface notification received: {}", swInterfaceEventNotification);
- // TODO HONEYCOMB-166 this should be lazy
- try {
- collector.onNotification(transformNotification(swInterfaceEventNotification));
- } catch (Exception e) {
- // There is no need to propagate exception to jvpp rx thread in case of unexpected failures.
- // We can't do much about it, so lets log the exception.
- LOG.warn("Failed to process interface notification {}", swInterfaceEventNotification, e);
+ notificationListenerReg = jvpp.getEventRegistry().registerSwInterfaceEventCallback(
+ new SwInterfaceEventCallback() {
+ @Override
+ public void onSwInterfaceEvent(SwInterfaceEvent swInterfaceEvent) {
+ LOG.trace("Interface notification received: {}", swInterfaceEvent);
+ // TODO HONEYCOMB-166 this should be lazy
+ try {
+ collector.onNotification(transformNotification(swInterfaceEvent));
+ } catch (Exception e) {
+ // There is no need to propagate exception to jvpp rx thread in case of unexpected failures.
+ // We can't do much about it, so lets log the exception.
+ LOG.warn("Failed to process interface notification {}", swInterfaceEvent, e);
+ }
+ }
+
+ //TODO this should be removed within VPP-1000
+ @Override
+ public void onError(VppCallbackException e) {
+
}
}
);
}
- private Notification transformNotification(final SwInterfaceEventNotification swInterfaceEventNotification) {
- if (swInterfaceEventNotification.deleted == 1) {
- return new InterfaceDeletedBuilder().setName(getIfcName(swInterfaceEventNotification)).build();
+ private Notification transformNotification(final SwInterfaceEvent swInterfaceEvent) {
+ if (swInterfaceEvent.deleted == 1) {
+ return new InterfaceDeletedBuilder().setName(getIfcName(swInterfaceEvent)).build();
} else {
return new InterfaceStateChangeBuilder()
- .setName(getIfcName(swInterfaceEventNotification))
- .setAdminStatus(swInterfaceEventNotification.adminUpDown == 1
+ .setName(getIfcName(swInterfaceEvent))
+ .setAdminStatus(swInterfaceEvent.adminUpDown == 1
? InterfaceStatus.Up
: InterfaceStatus.Down)
- .setOperStatus(swInterfaceEventNotification.linkUpDown == 1
+ .setOperStatus(swInterfaceEvent.linkUpDown == 1
? InterfaceStatus.Up
: InterfaceStatus.Down)
.build();
@@ -113,7 +124,7 @@ final class InterfaceChangeNotificationProducer implements ManagedNotificationPr
* <p/>
* In case mapping is not available, index is used as name.
*/
- private InterfaceNameOrIndex getIfcName(final SwInterfaceEventNotification swInterfaceEventNotification) {
+ private InterfaceNameOrIndex getIfcName(final SwInterfaceEvent swInterfaceEventNotification) {
final Optional<String> optionalName =
interfaceContext.getNameIfPresent(swInterfaceEventNotification.swIfIndex, mappingContext);
return optionalName.isPresent()