// // Copyright 2005 The Android Open Source Project // #define LOG_TAG "ServiceManager" #include "ServiceManager.h" #include "SignalHandler.h" #include #include #include #include #include #include #include #include #include #include #include #include namespace android { BServiceManager::BServiceManager() { } sp BServiceManager::getService(const String16& name) const { AutoMutex _l(mLock); ssize_t i = mServices.indexOfKey(name); LOGV("ServiceManager: getService(%s) -> %d\n", String8(name).string(), i); if (i >= 0) return mServices.valueAt(i); return NULL; } sp BServiceManager::checkService(const String16& name) const { AutoMutex _l(mLock); ssize_t i = mServices.indexOfKey(name); LOGV("ServiceManager: getService(%s) -> %d\n", String8(name).string(), i); if (i >= 0) return mServices.valueAt(i); return NULL; } status_t BServiceManager::addService(const String16& name, const sp& service) { AutoMutex _l(mLock); LOGI("ServiceManager: addService(%s, %p)\n", String8(name).string(), service.get()); const ssize_t res = mServices.add(name, service); if (res >= NO_ERROR) { mChanged.broadcast(); return NO_ERROR; } return res; } Vector BServiceManager::listServices() { Vector res; AutoMutex _l(mLock); const size_t N = mServices.size(); for (size_t i=0; i