1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef RPC_CHANNEL_H
17 #define RPC_CHANNEL_H
18 
19 namespace OHOS {
20 namespace Security {
21 namespace AccessToken {
22 /*
23  * Channel used for communicate with peer devices.
24  */
25 class RpcChannel {
26 public:
27     /**
28      * @brief Build connection with peer device.
29      *
30      * @return Result code represent if build successfully. 0 indicates success, -1 indicates failure.
31      * @since 1.0
32      * @version 1.0
33      */
34     virtual int BuildConnection() = 0;
35 
36     /**
37      * @brief Execute BaseRemoteCommand at peer device.
38      *
39      * @param commandName The name of Command.
40      * @param jsonPayload The json payload of command.
41      * @return Executed result response string.
42      * @since 1.0
43      * @version 1.0
44      */
45     virtual std::string ExecuteCommand(const std::string &commandName, const std::string &jsonPayload) = 0;
46 
47     /**
48      * @brief Handle data received. This interface only use for soft bus channel.
49      *
50      * @param session Session with peer device.
51      * @param bytes Data sent from the peer device.
52      * @param length Data length sent from the peer device.
53      * @since 1.0
54      * @version 1.0
55      */
HandleDataReceived(int session,const unsigned char * bytes,int length)56     virtual void HandleDataReceived(int session, const unsigned char *bytes, int length)
57     {}
58 
59     /**
60      * @brief Close rpc connection when no data is being transmitted.
61      *
62      * @since 1.0
63      * @version 1.0
64      */
CloseConnection()65     virtual void CloseConnection()
66     {}
67 
68     /**
69      * @brief Release resources when the device offline.
70      *
71      * @since 1.0
72      * @version 1.0
73      */
Release()74     virtual void Release() {}
75 };
76 }  // namespace AccessToken
77 }  // namespace Security
78 }  // namespace OHOS
79 
80 #endif