Creating a registry for gRPC services, early version restarts on each modification of the set of services.
Change-Id: I4ee69873508127ad5362563bc7f0e1c7ac4996aa
diff --git a/incubator/protobuf/services/nb/BUCK b/incubator/protobuf/services/nb/BUCK
index 6f582e0..1ce40c2 100644
--- a/incubator/protobuf/services/nb/BUCK
+++ b/incubator/protobuf/services/nb/BUCK
@@ -7,7 +7,8 @@
'//lib:protobuf-java-3.2.0',
'//lib:GRPC_1.3',
'//incubator/grpc-dependencies:grpc-core-repkg-1.3.0',
- '//lib:grpc-protobuf-lite-1.3.0'
+ '//lib:grpc-protobuf-lite-1.3.0',
+ '//incubator/protobuf/api:onos-grpc-api'
]
GRPC_DEPS = [
@@ -15,7 +16,7 @@
'//incubator/grpc-dependencies:grpc-core-repkg-1.3.0',
'//incubator/protobuf/models:onos-incubator-protobuf-models-proto',
'//lib:protobuf-java-3.2.0',
- '//lib:guava'
+ '//lib:guava',
]
BUNDLES = [
diff --git a/incubator/protobuf/services/nb/pom.xml b/incubator/protobuf/services/nb/pom.xml
index 43be7ce..5316c89 100644
--- a/incubator/protobuf/services/nb/pom.xml
+++ b/incubator/protobuf/services/nb/pom.xml
@@ -41,6 +41,11 @@
<artifactId>onos-incubator-protobuf-models</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-incubator-protobuf</artifactId>
+ <version>${project.version}</version>
+ </dependency>
</dependencies>
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
index df85f18..0ba9e48 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbDeviceService.java
@@ -28,6 +28,7 @@
import org.onosproject.grpc.nb.net.device.DeviceServiceGrpc.DeviceServiceImplBase;
import org.onosproject.grpc.net.models.PortProtoOuterClass.PortProto;
import org.onosproject.grpc.net.device.models.DeviceEnumsProto;
+import org.onosproject.protobuf.api.GrpcServiceRegistry;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.MastershipRole;
@@ -47,26 +48,39 @@
@Component(immediate = true)
public class GrpcNbDeviceService {
+ private static DeviceServiceNbServerInternal instance = null;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected GrpcServiceRegistry registry;
+
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
@Activate
public void activate() {
//TODO this should contact the registry service and register an instance
- // of this service.
+ // of this service
+ registry.register(getInnerInstance());
}
@Deactivate
public void deactivate() {
+ registry.unregister(getInnerInstance());
}
- private class DeviceServiceNbServerInternal extends DeviceServiceImplBase {
+ public DeviceServiceNbServerInternal getInnerInstance() {
+ if (instance == null) {
+ instance = new DeviceServiceNbServerInternal();
+ }
+ return instance;
+ }
- public DeviceServiceNbServerInternal() {
+ private final class DeviceServiceNbServerInternal extends DeviceServiceImplBase {
+
+ private DeviceServiceNbServerInternal() {
super();
}
-
@Override
public void getDeviceCount(
getDeviceCountRequest request,