From 54b6cfa9a9e5b861a9930af873580d6dc20f773c Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 21 Oct 2008 07:00:00 -0700 Subject: Initial Contribution --- cmds/runtime/ServiceManager.cpp | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 cmds/runtime/ServiceManager.cpp (limited to 'cmds/runtime/ServiceManager.cpp') diff --git a/cmds/runtime/ServiceManager.cpp b/cmds/runtime/ServiceManager.cpp new file mode 100644 index 000000000000..758a95c07d56 --- /dev/null +++ b/cmds/runtime/ServiceManager.cpp @@ -0,0 +1,74 @@ +// +// 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