Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56df7f51 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libfakeservicemanager: thread safe" into main am: e9de1d8c am: b5e4da0e am: e7b46b44

parents 5e060dac e7b46b44
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;
    }
    }
@@ -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;
@@ -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) {
@@ -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
+2 −0
Original line number Original line Diff line number Diff line
@@ -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>


@@ -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;
};
};