add retry-wait logic to car service when vehicle network service is not
ready
bug: 25749013
Change-Id: Ie11c1935654253a49d7b0360d44d4b17db8f3838
(cherry picked from commit b9018a93cd0ad50bea9da80825c284c9c02f9d0e)
diff --git a/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetwork.java b/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetwork.java
index d2ce2b5..b6ae91a 100644
--- a/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetwork.java
+++ b/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetwork.java
@@ -65,6 +65,9 @@
private VehicleNetworkHalMock mHalMock;
private IVehicleNetworkHalMock mHalMockImpl;
+ private static final int VNS_CONNECT_MAX_RETRY = 10;
+ private static final long VNS_RETRY_WAIT_TIME_MS = 1000;
+
/**
* Factory method to create VehicleNetwork
* @param listener listener for listening events
@@ -73,8 +76,21 @@
*/
public static VehicleNetwork createVehicleNetwork(VehicleNetworkListener listener,
Looper looper) {
- IVehicleNetwork service = IVehicleNetwork.Stub.asInterface(ServiceManager.getService(
- IVehicleNetwork.class.getCanonicalName()));
+ int retryCount = 0;
+ IVehicleNetwork service = null;
+ while (service == null) {
+ service = IVehicleNetwork.Stub.asInterface(ServiceManager.getService(
+ IVehicleNetwork.class.getCanonicalName()));
+ retryCount++;
+ if (retryCount > VNS_CONNECT_MAX_RETRY) {
+ break;
+ }
+ try {
+ Thread.sleep(VNS_RETRY_WAIT_TIME_MS);
+ } catch (InterruptedException e) {
+ //ignore
+ }
+ }
if (service == null) {
throw new RuntimeException("Vehicle network service not available:" +
IVehicleNetwork.class.getCanonicalName());