162cb372279f0237f759d3fe8a7e03d8272ba327fynwang/* 262cb372279f0237f759d3fe8a7e03d8272ba327fynwang * Copyright (C) 2016 The Android Open Source Project 362cb372279f0237f759d3fe8a7e03d8272ba327fynwang * 462cb372279f0237f759d3fe8a7e03d8272ba327fynwang * Licensed under the Apache License, Version 2.0 (the "License"); 562cb372279f0237f759d3fe8a7e03d8272ba327fynwang * you may not use this file except in compliance with the License. 662cb372279f0237f759d3fe8a7e03d8272ba327fynwang * You may obtain a copy of the License at 762cb372279f0237f759d3fe8a7e03d8272ba327fynwang * 862cb372279f0237f759d3fe8a7e03d8272ba327fynwang * http://www.apache.org/licenses/LICENSE-2.0 962cb372279f0237f759d3fe8a7e03d8272ba327fynwang * 1062cb372279f0237f759d3fe8a7e03d8272ba327fynwang * Unless required by applicable law or agreed to in writing, software 1162cb372279f0237f759d3fe8a7e03d8272ba327fynwang * distributed under the License is distributed on an "AS IS" BASIS, 1262cb372279f0237f759d3fe8a7e03d8272ba327fynwang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1362cb372279f0237f759d3fe8a7e03d8272ba327fynwang * See the License for the specific language governing permissions and 1462cb372279f0237f759d3fe8a7e03d8272ba327fynwang * limitations under the License. 1562cb372279f0237f759d3fe8a7e03d8272ba327fynwang */ 1662cb372279f0237f759d3fe8a7e03d8272ba327fynwang 1762cb372279f0237f759d3fe8a7e03d8272ba327fynwang#ifndef _STORAGED_SERVICE_H_ 1862cb372279f0237f759d3fe8a7e03d8272ba327fynwang#define _STORAGED_SERVICE_H_ 1962cb372279f0237f759d3fe8a7e03d8272ba327fynwang 2062cb372279f0237f759d3fe8a7e03d8272ba327fynwang#include <vector> 2162cb372279f0237f759d3fe8a7e03d8272ba327fynwang 2262cb372279f0237f759d3fe8a7e03d8272ba327fynwang#include <binder/IInterface.h> 2362cb372279f0237f759d3fe8a7e03d8272ba327fynwang#include <binder/IBinder.h> 2462cb372279f0237f759d3fe8a7e03d8272ba327fynwang 2562cb372279f0237f759d3fe8a7e03d8272ba327fynwang#include "storaged.h" 2662cb372279f0237f759d3fe8a7e03d8272ba327fynwang 2762cb372279f0237f759d3fe8a7e03d8272ba327fynwangusing namespace android; 2862cb372279f0237f759d3fe8a7e03d8272ba327fynwang 2962cb372279f0237f759d3fe8a7e03d8272ba327fynwang// Interface 3062cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass IStoraged : public IInterface { 3162cb372279f0237f759d3fe8a7e03d8272ba327fynwangpublic: 3262cb372279f0237f759d3fe8a7e03d8272ba327fynwang enum { 3388ad33eff1fd70d276f9be70164afeb0dc639e58Jin Qian DUMPUIDS = IBinder::FIRST_CALL_TRANSACTION, 3462cb372279f0237f759d3fe8a7e03d8272ba327fynwang }; 3562cb372279f0237f759d3fe8a7e03d8272ba327fynwang // Request the service to run the test function 36bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian virtual std::vector<struct uid_info> dump_uids(const char* option) = 0; 3762cb372279f0237f759d3fe8a7e03d8272ba327fynwang 3862cb372279f0237f759d3fe8a7e03d8272ba327fynwang DECLARE_META_INTERFACE(Storaged); 3962cb372279f0237f759d3fe8a7e03d8272ba327fynwang}; 4062cb372279f0237f759d3fe8a7e03d8272ba327fynwang 4162cb372279f0237f759d3fe8a7e03d8272ba327fynwang// Client 4262cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass BpStoraged : public BpInterface<IStoraged> { 4362cb372279f0237f759d3fe8a7e03d8272ba327fynwangpublic: 4462cb372279f0237f759d3fe8a7e03d8272ba327fynwang BpStoraged(const sp<IBinder>& impl) : BpInterface<IStoraged>(impl){}; 45bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian virtual std::vector<struct uid_info> dump_uids(const char* option); 4662cb372279f0237f759d3fe8a7e03d8272ba327fynwang}; 4762cb372279f0237f759d3fe8a7e03d8272ba327fynwang 4862cb372279f0237f759d3fe8a7e03d8272ba327fynwang// Server 4962cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass BnStoraged : public BnInterface<IStoraged> { 5062cb372279f0237f759d3fe8a7e03d8272ba327fynwang virtual status_t onTransact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0); 5162cb372279f0237f759d3fe8a7e03d8272ba327fynwang}; 5262cb372279f0237f759d3fe8a7e03d8272ba327fynwang 5362cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass Storaged : public BnStoraged { 54bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian virtual std::vector<struct uid_info> dump_uids(const char* option); 55a2e5bd1347fe2e70d6eb0b54b5b077cdf14cabcfJin Qian virtual status_t dump(int fd, const Vector<String16>& args); 5662cb372279f0237f759d3fe8a7e03d8272ba327fynwang}; 5762cb372279f0237f759d3fe8a7e03d8272ba327fynwang 5862cb372279f0237f759d3fe8a7e03d8272ba327fynwangsp<IStoraged> get_storaged_service(); 5962cb372279f0237f759d3fe8a7e03d8272ba327fynwang 6062cb372279f0237f759d3fe8a7e03d8272ba327fynwang#endif /* _STORAGED_SERVICE_H_ */