Allow two service address to be registered.
Allow Grpc vehicle proxy server bind to two addrs. We need one
for vsock to be used by VHAL and another one for local ethernet
connection. vsock local loopback does not work on the host.
Flag: EXEMPT host-side component.
Test: Manual test.
Bug: 328316981
Change-Id: I4efc802121b780b663fd8a26b65dc56a001feff6
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";