From edbf3b6af777b721cd2a1ef461947e51e88241e1 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 19:31:44 -0800 Subject: auto import from //depot/cupcake/@135843 --- 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 0000000000..758a95c07d --- /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