Change callback argument to boolean.
Bug: 176240491
Test: atest hidl_lazy_test
Change-Id: If909f292288ecf0d521b0eaf93f5517fafaf3969
diff --git a/transport/HidlLazyUtils.cpp b/transport/HidlLazyUtils.cpp
index ce37dd0..be7470f 100644
--- a/transport/HidlLazyUtils.cpp
+++ b/transport/HidlLazyUtils.cpp
@@ -40,8 +40,7 @@
void reRegister();
- void setActiveServicesCountCallback(
- const std::function<bool(int)>& activeServicesCountCallback);
+ void setActiveServicesCallback(const std::function<bool(bool)>& activeServicesCallback);
protected:
Return<void> onClients(const sp<IBase>& service, bool clients) override;
@@ -80,7 +79,12 @@
/**
* Callback for reporting the number of services with clients.
*/
- std::function<bool(int)> mActiveServicesCountCallback;
+ std::function<bool(bool)> mActiveServicesCallback;
+
+ /**
+ * Previous value passed to the active services callback.
+ */
+ std::optional<bool> mPreviousHasClients;
};
class LazyServiceRegistrarImpl {
@@ -91,8 +95,7 @@
const std::string& name);
bool tryUnregister();
void reRegister();
- void setActiveServicesCountCallback(
- const std::function<bool(int)>& activeServicesCountCallback);
+ void setActiveServicesCallback(const std::function<bool(bool)>& activeServicesCallback);
private:
sp<ClientCounterCallback> mClientCallback;
@@ -166,8 +169,12 @@
<< "/" << registered.name << " has clients: " << clients;
bool handledInCallback = false;
- if (mActiveServicesCountCallback != nullptr) {
- handledInCallback = mActiveServicesCountCallback(numWithClients);
+ if (mActiveServicesCallback != nullptr) {
+ bool hasClients = numWithClients != 0;
+ if (hasClients != mPreviousHasClients) {
+ handledInCallback = mActiveServicesCallback(hasClients);
+ mPreviousHasClients = hasClients;
+ }
}
// If there is no callback defined or the callback did not handle this
@@ -229,9 +236,9 @@
reRegister();
}
-void ClientCounterCallback::setActiveServicesCountCallback(
- const std::function<bool(int)>& activeServicesCountCallback) {
- mActiveServicesCountCallback = activeServicesCountCallback;
+void ClientCounterCallback::setActiveServicesCallback(
+ const std::function<bool(bool)>& activeServicesCallback) {
+ mActiveServicesCallback = activeServicesCallback;
}
status_t LazyServiceRegistrarImpl::registerService(
@@ -251,9 +258,9 @@
mClientCallback->reRegister();
}
-void LazyServiceRegistrarImpl::setActiveServicesCountCallback(
- const std::function<bool(int)>& activeServicesCountCallback) {
- mClientCallback->setActiveServicesCountCallback(activeServicesCountCallback);
+void LazyServiceRegistrarImpl::setActiveServicesCallback(
+ const std::function<bool(bool)>& activeServicesCallback) {
+ mClientCallback->setActiveServicesCallback(activeServicesCallback);
}
} // namespace details
@@ -280,9 +287,9 @@
mImpl->reRegister();
}
-void LazyServiceRegistrar::setActiveServicesCountCallback(
- const std::function<bool(int)>& activeServicesCountCallback) {
- mImpl->setActiveServicesCountCallback(activeServicesCountCallback);
+void LazyServiceRegistrar::setActiveServicesCallback(
+ const std::function<bool(bool)>& activeServicesCallback) {
+ mImpl->setActiveServicesCallback(activeServicesCallback);
}
} // namespace hardware