storaged_service.h revision bcd6e3b9d92b2eea3b054372c9adf00a1e6235bc
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 {
3362cb372279f0237f759d3fe8a7e03d8272ba327fynwang        DUMPTASKS = IBinder::FIRST_CALL_TRANSACTION,
34bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian        DUMPUIDS  = IBinder::FIRST_CALL_TRANSACTION + 1,
3562cb372279f0237f759d3fe8a7e03d8272ba327fynwang    };
3662cb372279f0237f759d3fe8a7e03d8272ba327fynwang    // Request the service to run the test function
3762cb372279f0237f759d3fe8a7e03d8272ba327fynwang    virtual std::vector<struct task_info> dump_tasks(const char* option) = 0;
38bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian    virtual std::vector<struct uid_info> dump_uids(const char* option) = 0;
3962cb372279f0237f759d3fe8a7e03d8272ba327fynwang
4062cb372279f0237f759d3fe8a7e03d8272ba327fynwang    DECLARE_META_INTERFACE(Storaged);
4162cb372279f0237f759d3fe8a7e03d8272ba327fynwang};
4262cb372279f0237f759d3fe8a7e03d8272ba327fynwang
4362cb372279f0237f759d3fe8a7e03d8272ba327fynwang// Client
4462cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass BpStoraged : public BpInterface<IStoraged> {
4562cb372279f0237f759d3fe8a7e03d8272ba327fynwangpublic:
4662cb372279f0237f759d3fe8a7e03d8272ba327fynwang    BpStoraged(const sp<IBinder>& impl) : BpInterface<IStoraged>(impl){};
4762cb372279f0237f759d3fe8a7e03d8272ba327fynwang    virtual std::vector<struct task_info> dump_tasks(const char* option);
48bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian    virtual std::vector<struct uid_info> dump_uids(const char* option);
4962cb372279f0237f759d3fe8a7e03d8272ba327fynwang};
5062cb372279f0237f759d3fe8a7e03d8272ba327fynwang
5162cb372279f0237f759d3fe8a7e03d8272ba327fynwang// Server
5262cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass BnStoraged : public BnInterface<IStoraged> {
5362cb372279f0237f759d3fe8a7e03d8272ba327fynwang    virtual status_t onTransact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0);
5462cb372279f0237f759d3fe8a7e03d8272ba327fynwang};
5562cb372279f0237f759d3fe8a7e03d8272ba327fynwang
5662cb372279f0237f759d3fe8a7e03d8272ba327fynwangclass Storaged : public BnStoraged {
5762cb372279f0237f759d3fe8a7e03d8272ba327fynwang    virtual std::vector<struct task_info> dump_tasks(const char* option);
58bcd6e3b9d92b2eea3b054372c9adf00a1e6235bcJin Qian    virtual std::vector<struct uid_info> dump_uids(const char* option);
5962cb372279f0237f759d3fe8a7e03d8272ba327fynwang};
6062cb372279f0237f759d3fe8a7e03d8272ba327fynwang
6162cb372279f0237f759d3fe8a7e03d8272ba327fynwangsp<IStoraged> get_storaged_service();
6262cb372279f0237f759d3fe8a7e03d8272ba327fynwang
6362cb372279f0237f759d3fe8a7e03d8272ba327fynwang#endif /* _STORAGED_SERVICE_H_ */