Allow two service address to be registered. am: b02b772954
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/3138174
Change-Id: I03e62c85f8be000d52bd16da578642c37c1e3ee6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp b/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
index a6abfa3..eb98af0 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
+++ b/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp
@@ -40,7 +40,11 @@
GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::string serverAddr,
std::unique_ptr<IVehicleHardware>&& hardware)
- : mServiceAddr(std::move(serverAddr)), mHardware(std::move(hardware)) {
+ : GrpcVehicleProxyServer(std::vector<std::string>({serverAddr}), std::move(hardware)){};
+
+GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAddrs,
+ std::unique_ptr<IVehicleHardware>&& hardware)
+ : mServiceAddrs(std::move(serverAddrs)), mHardware(std::move(hardware)) {
mHardware->registerOnPropertyChangeEvent(
std::make_unique<const IVehicleHardware::PropertyChangeCallback>(
[this](std::vector<aidlvhal::VehiclePropValue> values) {
@@ -254,7 +258,9 @@
}
::grpc::ServerBuilder builder;
builder.RegisterService(this);
- builder.AddListeningPort(mServiceAddr, getServerCredentials());
+ for (const std::string& serviceAddr : mServiceAddrs) {
+ builder.AddListeningPort(serviceAddr, getServerCredentials());
+ }
mServer = builder.BuildAndStart();
CHECK(mServer) << __func__ << ": failed to create the GRPC server, "
<< "please make sure the configuration and permissions are correct";
diff --git a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h b/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h
index dd9e2aa..5ffb531 100644
--- a/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h
+++ b/automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.h
@@ -41,6 +41,9 @@
public:
GrpcVehicleProxyServer(std::string serverAddr, std::unique_ptr<IVehicleHardware>&& hardware);
+ GrpcVehicleProxyServer(std::vector<std::string> serverAddrs,
+ std::unique_ptr<IVehicleHardware>&& hardware);
+
::grpc::Status GetAllPropertyConfig(
::grpc::ServerContext* context, const ::google::protobuf::Empty* request,
::grpc::ServerWriter<proto::VehiclePropConfig>* stream) override;
@@ -116,7 +119,7 @@
static std::atomic<uint64_t> connection_id_counter_;
};
- std::string mServiceAddr;
+ std::vector<std::string> mServiceAddrs;
std::unique_ptr<::grpc::Server> mServer{nullptr};
std::unique_ptr<IVehicleHardware> mHardware;