Update xconnectService when the service is bound/unbound
Change-Id: Ic5a6cfc1db2437a410a27c0ec66e664f88cabb2d
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index f053024..c5e5bb4 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -27,6 +27,7 @@
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.onlab.packet.Ethernet;
import org.onlab.packet.ICMP6;
@@ -232,7 +233,10 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
public LeadershipService leadershipService;
- @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY)
+ @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
+ bind = "bindXconnectService",
+ unbind = "unbindXconnectService",
+ policy = ReferencePolicy.DYNAMIC)
public XconnectService xconnectService;
@Property(name = "activeProbing", boolValue = true,
@@ -394,6 +398,24 @@
Instant lastEdgePortEvent = Instant.EPOCH;
+ protected void bindXconnectService(XconnectService xconnectService) {
+ if (this.xconnectService == null) {
+ log.info("Binding XconnectService");
+ this.xconnectService = xconnectService;
+ } else {
+ log.warn("Trying to bind XconnectService but it is already bound");
+ }
+ }
+
+ protected void unbindXconnectService(XconnectService xconnectService) {
+ if (this.xconnectService == xconnectService) {
+ log.info("Unbinding XconnectService");
+ this.xconnectService = null;
+ } else {
+ log.warn("Trying to unbind XconnectService but it is already unbound");
+ }
+ }
+
@Activate
protected void activate(ComponentContext context) {
appId = coreService.registerApplication(APP_NAME);