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