1a34a8711Sopenharmony_ci/* 2a34a8711Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3a34a8711Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a34a8711Sopenharmony_ci * you may not use this file except in compliance with the License. 5a34a8711Sopenharmony_ci * You may obtain a copy of the License at 6a34a8711Sopenharmony_ci * 7a34a8711Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a34a8711Sopenharmony_ci * 9a34a8711Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a34a8711Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a34a8711Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a34a8711Sopenharmony_ci * See the License for the specific language governing permissions and 13a34a8711Sopenharmony_ci * limitations under the License. 14a34a8711Sopenharmony_ci */ 15a34a8711Sopenharmony_ci 16a34a8711Sopenharmony_ci#ifndef OHOS_RPC_FOO_TEST_H 17a34a8711Sopenharmony_ci#define OHOS_RPC_FOO_TEST_H 18a34a8711Sopenharmony_ci 19a34a8711Sopenharmony_ci#include "iremote_broker.h" 20a34a8711Sopenharmony_ci#include "iremote_object.h" 21a34a8711Sopenharmony_ci#include "iremote_proxy.h" 22a34a8711Sopenharmony_ci#include "iremote_stub.h" 23a34a8711Sopenharmony_ci#include "message_parcel.h" 24a34a8711Sopenharmony_ci 25a34a8711Sopenharmony_cinamespace OHOS { 26a34a8711Sopenharmony_ci#define RPC_ACCESS_TOKEN_FLAG 0x1 27a34a8711Sopenharmony_ci#define INVAL_TOKEN_ID 0x0 28a34a8711Sopenharmony_ciclass IRpcFooTest : public IRemoteBroker { 29a34a8711Sopenharmony_cipublic: 30a34a8711Sopenharmony_ci enum FooInterFaceId { 31a34a8711Sopenharmony_ci GET_FOO_NAME = 0, 32a34a8711Sopenharmony_ci SEND_ASYNC_REPLY = 1, 33a34a8711Sopenharmony_ci SEND_WRONG_REPLY = 2, 34a34a8711Sopenharmony_ci GET_TOKENID = 3, 35a34a8711Sopenharmony_ci TEST_REMOTE_OBJECT = 4, 36a34a8711Sopenharmony_ci TEST_ADD = 5, 37a34a8711Sopenharmony_ci }; 38a34a8711Sopenharmony_ci std::string GetFooName(void); 39a34a8711Sopenharmony_ci virtual std::string TestGetFooName(void) = 0; 40a34a8711Sopenharmony_ci virtual int32_t TestAccessToken(MessageParcel &data, MessageParcel &reply) = 0; 41a34a8711Sopenharmony_ci virtual int32_t TestRemoteObject(MessageParcel &data, MessageParcel &reply) = 0; 42a34a8711Sopenharmony_ci virtual int32_t TestAdd(MessageParcel &data, MessageParcel &reply) = 0; 43a34a8711Sopenharmony_cipublic: 44a34a8711Sopenharmony_ci DECLARE_INTERFACE_DESCRIPTOR(u"test.rpc.IRpcFooTest"); 45a34a8711Sopenharmony_ciprivate: 46a34a8711Sopenharmony_ci std::string fooName_ = "IRpcFooTest"; 47a34a8711Sopenharmony_ci}; 48a34a8711Sopenharmony_ci 49a34a8711Sopenharmony_ciclass RpcFooStub : public IRemoteStub<IRpcFooTest> { 50a34a8711Sopenharmony_cipublic: 51a34a8711Sopenharmony_ci int OnRemoteRequest(uint32_t code, 52a34a8711Sopenharmony_ci MessageParcel &data, MessageParcel &reply, MessageOption &option) override; 53a34a8711Sopenharmony_ci std::string TestGetFooName(void) override; 54a34a8711Sopenharmony_ci int32_t TestAccessToken(MessageParcel &data, MessageParcel &reply) override; 55a34a8711Sopenharmony_ci int32_t TestRemoteObject(MessageParcel &data, MessageParcel &reply) override; 56a34a8711Sopenharmony_ci int32_t TestAdd(MessageParcel &data, MessageParcel &reply) override; 57a34a8711Sopenharmony_ci}; 58a34a8711Sopenharmony_ci 59a34a8711Sopenharmony_ciclass RpcFooProxy : public IRemoteProxy<IRpcFooTest> { 60a34a8711Sopenharmony_cipublic: 61a34a8711Sopenharmony_ci explicit RpcFooProxy(const sptr<IRemoteObject> &impl); 62a34a8711Sopenharmony_ci ~RpcFooProxy() = default; 63a34a8711Sopenharmony_ci std::string TestGetFooName(void) override; 64a34a8711Sopenharmony_ci int32_t TestAccessToken(MessageParcel &data, MessageParcel &reply) override; 65a34a8711Sopenharmony_ci int32_t TestRemoteObject(MessageParcel &data, MessageParcel &reply) override; 66a34a8711Sopenharmony_ci int32_t TestAdd(MessageParcel &data, MessageParcel &reply) override; 67a34a8711Sopenharmony_ciprivate: 68a34a8711Sopenharmony_ci static inline BrokerDelegator<RpcFooProxy> delegator_; 69a34a8711Sopenharmony_ci}; 70a34a8711Sopenharmony_ci 71a34a8711Sopenharmony_ciclass RpcDeathRecipient : public IRemoteObject::DeathRecipient { 72a34a8711Sopenharmony_cipublic: 73a34a8711Sopenharmony_ci virtual void OnRemoteDied(const wptr<IRemoteObject> &remote); 74a34a8711Sopenharmony_ci RpcDeathRecipient(); 75a34a8711Sopenharmony_ci virtual ~RpcDeathRecipient(); 76a34a8711Sopenharmony_ci}; 77a34a8711Sopenharmony_ci} // namespace OHOS 78a34a8711Sopenharmony_ci#endif // OHOS_RPC_FOO_TEST_H 79a34a8711Sopenharmony_ci 80