mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-02-27 04:53:53 +08:00
openpilot v0.6 release
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (C) 2005 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//
|
||||
#ifndef ANDROID_ISERVICE_MANAGER_H
|
||||
#define ANDROID_ISERVICE_MANAGER_H
|
||||
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IPermissionController.h>
|
||||
#include <utils/Vector.h>
|
||||
#include <utils/String16.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
class IServiceManager : public IInterface
|
||||
{
|
||||
public:
|
||||
DECLARE_META_INTERFACE(ServiceManager);
|
||||
|
||||
/**
|
||||
* Retrieve an existing service, blocking for a few seconds
|
||||
* if it doesn't yet exist.
|
||||
*/
|
||||
virtual sp<IBinder> getService( const String16& name) const = 0;
|
||||
|
||||
/**
|
||||
* Retrieve an existing service, non-blocking.
|
||||
*/
|
||||
virtual sp<IBinder> checkService( const String16& name) const = 0;
|
||||
|
||||
/**
|
||||
* Register a service.
|
||||
*/
|
||||
virtual status_t addService( const String16& name,
|
||||
const sp<IBinder>& service,
|
||||
bool allowIsolated = false) = 0;
|
||||
|
||||
/**
|
||||
* Return list of all existing services.
|
||||
*/
|
||||
virtual Vector<String16> listServices() = 0;
|
||||
|
||||
enum {
|
||||
GET_SERVICE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION,
|
||||
CHECK_SERVICE_TRANSACTION,
|
||||
ADD_SERVICE_TRANSACTION,
|
||||
LIST_SERVICES_TRANSACTION,
|
||||
};
|
||||
};
|
||||
|
||||
sp<IServiceManager> defaultServiceManager();
|
||||
|
||||
template<typename INTERFACE>
|
||||
status_t getService(const String16& name, sp<INTERFACE>* outService)
|
||||
{
|
||||
const sp<IServiceManager> sm = defaultServiceManager();
|
||||
if (sm != NULL) {
|
||||
*outService = interface_cast<INTERFACE>(sm->getService(name));
|
||||
if ((*outService) != NULL) return NO_ERROR;
|
||||
}
|
||||
return NAME_NOT_FOUND;
|
||||
}
|
||||
|
||||
bool checkCallingPermission(const String16& permission);
|
||||
bool checkCallingPermission(const String16& permission,
|
||||
int32_t* outPid, int32_t* outUid);
|
||||
bool checkPermission(const String16& permission, pid_t pid, uid_t uid);
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
class BnServiceManager : public BnInterface<IServiceManager>
|
||||
{
|
||||
public:
|
||||
virtual status_t onTransact( uint32_t code,
|
||||
const Parcel& data,
|
||||
Parcel* reply,
|
||||
uint32_t flags = 0);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
}; // namespace android
|
||||
|
||||
#endif // ANDROID_ISERVICE_MANAGER_H
|
||||
|
||||
Reference in New Issue
Block a user