Improve the way to get binder service in ResolverEventReporter
To prevent DNS lookup threads from being blocked by waiting for
the netd_listener service ready, use non-blocking call to get the
service.
Test: system/netd/tests/runtests.sh passed
Change-Id: I1148d49f87cce4091e18b5cfaf363177f4fdbfd0
diff --git a/resolv/ResolverEventReporter.h b/resolv/ResolverEventReporter.h
index 0f83cd4..09c6b70 100644
--- a/resolv/ResolverEventReporter.h
+++ b/resolv/ResolverEventReporter.h
@@ -17,6 +17,8 @@
#ifndef NETD_RESOLV_EVENT_REPORTER_H
#define NETD_RESOLV_EVENT_REPORTER_H
+#include <android-base/thread_annotations.h>
+
#include "aidl/android/net/metrics/INetdEventListener.h"
/*
@@ -29,10 +31,12 @@
static std::shared_ptr<aidl::android::net::metrics::INetdEventListener> getListener();
private:
- // Get netd events listener binder.
- ResolverEventReporter();
+ std::mutex mEventMutex;
+ std::shared_ptr<aidl::android::net::metrics::INetdEventListener> mListener
+ GUARDED_BY(mEventMutex);
- std::shared_ptr<aidl::android::net::metrics::INetdEventListener> mListener;
+ std::shared_ptr<aidl::android::net::metrics::INetdEventListener> getNetdEventListener()
+ EXCLUDES(mEventMutex);
};
#endif // NETD_RESOLV_EVENT_REPORTER_H