Loading libs/fakeservicemanager/FakeServiceManager.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ sp<IBinder> FakeServiceManager::getService( const String16& name) const { } sp<IBinder> FakeServiceManager::checkService( const String16& name) const { std::lock_guard<std::mutex> l(mMutex); auto it = mNameToService.find(name); if (it == mNameToService.end()) { return nullptr; Loading @@ -36,6 +38,8 @@ sp<IBinder> FakeServiceManager::checkService( const String16& name) const { status_t FakeServiceManager::addService(const String16& name, const sp<IBinder>& service, bool /*allowIsolated*/, int /*dumpsysFlags*/) { std::lock_guard<std::mutex> l(mMutex); if (service == nullptr) { return UNEXPECTED_NULL; } Loading @@ -44,6 +48,8 @@ status_t FakeServiceManager::addService(const String16& name, const sp<IBinder>& } Vector<String16> FakeServiceManager::listServices(int /*dumpsysFlags*/) { std::lock_guard<std::mutex> l(mMutex); Vector<String16> services; for (auto const& [name, service] : mNameToService) { (void) service; Loading @@ -61,10 +67,14 @@ sp<IBinder> FakeServiceManager::waitForService(const String16& name) { } bool FakeServiceManager::isDeclared(const String16& name) { std::lock_guard<std::mutex> l(mMutex); return mNameToService.find(name) != mNameToService.end(); } Vector<String16> FakeServiceManager::getDeclaredInstances(const String16& name) { std::lock_guard<std::mutex> l(mMutex); Vector<String16> out; const String16 prefix = name + String16("/"); for (const auto& [registeredName, service] : mNameToService) { Loading Loading @@ -108,6 +118,8 @@ std::vector<IServiceManager::ServiceDebugInfo> FakeServiceManager::getServiceDeb } void FakeServiceManager::clear() { std::lock_guard<std::mutex> l(mMutex); mNameToService.clear(); } } // namespace android libs/fakeservicemanager/include/fakeservicemanager/FakeServiceManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <binder/IServiceManager.h> #include <map> #include <mutex> #include <optional> #include <vector> Loading Loading @@ -68,6 +69,7 @@ public: void clear(); private: mutable std::mutex mMutex; std::map<String16, sp<IBinder>> mNameToService; }; Loading Loading
libs/fakeservicemanager/FakeServiceManager.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ sp<IBinder> FakeServiceManager::getService( const String16& name) const { } sp<IBinder> FakeServiceManager::checkService( const String16& name) const { std::lock_guard<std::mutex> l(mMutex); auto it = mNameToService.find(name); if (it == mNameToService.end()) { return nullptr; Loading @@ -36,6 +38,8 @@ sp<IBinder> FakeServiceManager::checkService( const String16& name) const { status_t FakeServiceManager::addService(const String16& name, const sp<IBinder>& service, bool /*allowIsolated*/, int /*dumpsysFlags*/) { std::lock_guard<std::mutex> l(mMutex); if (service == nullptr) { return UNEXPECTED_NULL; } Loading @@ -44,6 +48,8 @@ status_t FakeServiceManager::addService(const String16& name, const sp<IBinder>& } Vector<String16> FakeServiceManager::listServices(int /*dumpsysFlags*/) { std::lock_guard<std::mutex> l(mMutex); Vector<String16> services; for (auto const& [name, service] : mNameToService) { (void) service; Loading @@ -61,10 +67,14 @@ sp<IBinder> FakeServiceManager::waitForService(const String16& name) { } bool FakeServiceManager::isDeclared(const String16& name) { std::lock_guard<std::mutex> l(mMutex); return mNameToService.find(name) != mNameToService.end(); } Vector<String16> FakeServiceManager::getDeclaredInstances(const String16& name) { std::lock_guard<std::mutex> l(mMutex); Vector<String16> out; const String16 prefix = name + String16("/"); for (const auto& [registeredName, service] : mNameToService) { Loading Loading @@ -108,6 +118,8 @@ std::vector<IServiceManager::ServiceDebugInfo> FakeServiceManager::getServiceDeb } void FakeServiceManager::clear() { std::lock_guard<std::mutex> l(mMutex); mNameToService.clear(); } } // namespace android
libs/fakeservicemanager/include/fakeservicemanager/FakeServiceManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <binder/IServiceManager.h> #include <map> #include <mutex> #include <optional> #include <vector> Loading Loading @@ -68,6 +69,7 @@ public: void clear(); private: mutable std::mutex mMutex; std::map<String16, sp<IBinder>> mNameToService; }; Loading