1ca0551cfSopenharmony_ci/*
2ca0551cfSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd.
3ca0551cfSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4ca0551cfSopenharmony_ci * you may not use this file except in compliance with the License.
5ca0551cfSopenharmony_ci * You may obtain a copy of the License at
6ca0551cfSopenharmony_ci *
7ca0551cfSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8ca0551cfSopenharmony_ci *
9ca0551cfSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10ca0551cfSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11ca0551cfSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12ca0551cfSopenharmony_ci * See the License for the specific language governing permissions and
13ca0551cfSopenharmony_ci * limitations under the License.
14ca0551cfSopenharmony_ci */
15ca0551cfSopenharmony_ci
16ca0551cfSopenharmony_ci#![allow(missing_docs)]
17ca0551cfSopenharmony_ci#![allow(unused_variables)]
18ca0551cfSopenharmony_ci#![allow(unused_mut)]
19ca0551cfSopenharmony_ci
20ca0551cfSopenharmony_ciextern crate ipc_rust;
21ca0551cfSopenharmony_ci
22ca0551cfSopenharmony_ciuse ipc_rust::{
23ca0551cfSopenharmony_ci    IRemoteBroker, IRemoteObj, RemoteStub, Result,
24ca0551cfSopenharmony_ci    RemoteObj, define_remote_object, FIRST_CALL_TRANSACTION
25ca0551cfSopenharmony_ci};
26ca0551cfSopenharmony_ciuse ipc_rust::{MsgParcel, BorrowedMsgParcel};
27ca0551cfSopenharmony_ci
28ca0551cfSopenharmony_ci
29ca0551cfSopenharmony_cipub enum IIdlTestServiceCode {
30ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic001  = FIRST_CALL_TRANSACTION,
31ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic002,
32ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic101,
33ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic102,
34ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic103,
35ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic104,
36ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic105,
37ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic106,
38ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic107,
39ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic108,
40ca0551cfSopenharmony_ci    CodeIdlIpcTestBasic199,
41ca0551cfSopenharmony_ci}
42ca0551cfSopenharmony_ci
43ca0551cfSopenharmony_cidefine_remote_object!(
44ca0551cfSopenharmony_ci    IIdlTestService["IIdlTestService"] {
45ca0551cfSopenharmony_ci        stub: IdlTestServiceStub(on_remote_request),
46ca0551cfSopenharmony_ci        proxy: IdlTestServiceProxy,
47ca0551cfSopenharmony_ci    }
48ca0551cfSopenharmony_ci);
49ca0551cfSopenharmony_ci
50ca0551cfSopenharmony_cipub trait IIdlTestService: IRemoteBroker {
51ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_001(&self) -> Result<()>;
52ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_002(&self) -> Result<()>;
53ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_101(&self, i_bool: &bool) -> Result<bool>;
54ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_102(&self, i_byte: &i8) -> Result<i8>;
55ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_103(&self, i_short: &i16) -> Result<i16>;
56ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_104(&self, i_int: &i32) -> Result<i32>;
57ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_105(&self, i_long: &i64) -> Result<i64>;
58ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_106(&self, i_float: &f32) -> Result<f32>;
59ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_107(&self, i_double: &f64) -> Result<f64>;
60ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_108(&self, i_string: &str) -> Result<String>;
61ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_199(&self, i_bool: &bool, i_long: &i64, i_float: &f32,
62ca0551cfSopenharmony_ci        i_double: &f64, i_string: &str) -> Result<bool>;
63ca0551cfSopenharmony_ci}
64ca0551cfSopenharmony_ci
65ca0551cfSopenharmony_cifn on_remote_request(stub: &dyn IIdlTestService, code: u32, data: &BorrowedMsgParcel,
66ca0551cfSopenharmony_ci    reply: &mut BorrowedMsgParcel) -> Result<()> {
67ca0551cfSopenharmony_ci    match code {
68ca0551cfSopenharmony_ci        1 => {
69ca0551cfSopenharmony_ci            stub.idl_ipc_test_basic_001()?;
70ca0551cfSopenharmony_ci            Ok(())
71ca0551cfSopenharmony_ci        }
72ca0551cfSopenharmony_ci        2 => {
73ca0551cfSopenharmony_ci            stub.idl_ipc_test_basic_002()?;
74ca0551cfSopenharmony_ci            Ok(())
75ca0551cfSopenharmony_ci        }
76ca0551cfSopenharmony_ci        3 => {
77ca0551cfSopenharmony_ci            let i_bool : bool = data.read()?;
78ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_101(&i_bool)?;
79ca0551cfSopenharmony_ci            reply.write(&result)?;
80ca0551cfSopenharmony_ci            Ok(())
81ca0551cfSopenharmony_ci        }
82ca0551cfSopenharmony_ci        4 => {
83ca0551cfSopenharmony_ci            let i_byte : i8 = data.read()?;
84ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_102(&i_byte)?;
85ca0551cfSopenharmony_ci            reply.write(&result)?;
86ca0551cfSopenharmony_ci            Ok(())
87ca0551cfSopenharmony_ci        }
88ca0551cfSopenharmony_ci        5 => {
89ca0551cfSopenharmony_ci            let i_short : i16 = data.read()?;
90ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_103(&i_short)?;
91ca0551cfSopenharmony_ci            reply.write(&result)?;
92ca0551cfSopenharmony_ci            Ok(())
93ca0551cfSopenharmony_ci        }
94ca0551cfSopenharmony_ci        6 => {
95ca0551cfSopenharmony_ci            let i_int : i32 = data.read()?;
96ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_104(&i_int)?;
97ca0551cfSopenharmony_ci            reply.write(&result)?;
98ca0551cfSopenharmony_ci            Ok(())
99ca0551cfSopenharmony_ci        }
100ca0551cfSopenharmony_ci        7 => {
101ca0551cfSopenharmony_ci            let i_long : i64 = data.read()?;
102ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_105(&i_long)?;
103ca0551cfSopenharmony_ci            reply.write(&result)?;
104ca0551cfSopenharmony_ci            Ok(())
105ca0551cfSopenharmony_ci        }
106ca0551cfSopenharmony_ci        8 => {
107ca0551cfSopenharmony_ci            let i_float : f32 = data.read()?;
108ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_106(&i_float)?;
109ca0551cfSopenharmony_ci            reply.write(&result)?;
110ca0551cfSopenharmony_ci            Ok(())
111ca0551cfSopenharmony_ci        }
112ca0551cfSopenharmony_ci        9 => {
113ca0551cfSopenharmony_ci            let i_double : f64 = data.read()?;
114ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_107(&i_double)?;
115ca0551cfSopenharmony_ci            reply.write(&result)?;
116ca0551cfSopenharmony_ci            Ok(())
117ca0551cfSopenharmony_ci        }
118ca0551cfSopenharmony_ci        10 => {
119ca0551cfSopenharmony_ci            let i_string : String = data.read()?;
120ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_108(&i_string)?;
121ca0551cfSopenharmony_ci            reply.write(&result)?;
122ca0551cfSopenharmony_ci            Ok(())
123ca0551cfSopenharmony_ci        }
124ca0551cfSopenharmony_ci        11 => {
125ca0551cfSopenharmony_ci            let i_bool : bool = data.read()?;
126ca0551cfSopenharmony_ci            let i_long : i64 = data.read()?;
127ca0551cfSopenharmony_ci            let i_float : f32 = data.read()?;
128ca0551cfSopenharmony_ci            let i_double : f64 = data.read()?;
129ca0551cfSopenharmony_ci            let i_string : String = data.read()?;
130ca0551cfSopenharmony_ci            let result = stub.idl_ipc_test_basic_199(&i_bool, &i_long, &i_float, &i_double,
131ca0551cfSopenharmony_ci                &i_string)?;
132ca0551cfSopenharmony_ci            reply.write(&result)?;
133ca0551cfSopenharmony_ci            Ok(())
134ca0551cfSopenharmony_ci        }
135ca0551cfSopenharmony_ci        _ => Err(-1)
136ca0551cfSopenharmony_ci    }
137ca0551cfSopenharmony_ci}
138ca0551cfSopenharmony_ci
139ca0551cfSopenharmony_ciimpl IIdlTestService for RemoteStub<IdlTestServiceStub> {
140ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_001(&self) -> Result<()> {
141ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_001()
142ca0551cfSopenharmony_ci    }
143ca0551cfSopenharmony_ci
144ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_002(&self) -> Result<()> {
145ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_002()
146ca0551cfSopenharmony_ci    }
147ca0551cfSopenharmony_ci
148ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_101(&self, i_bool: &bool) -> Result<bool> {
149ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_101(i_bool)
150ca0551cfSopenharmony_ci    }
151ca0551cfSopenharmony_ci
152ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_102(&self, i_byte: &i8) -> Result<i8> {
153ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_102(i_byte)
154ca0551cfSopenharmony_ci    }
155ca0551cfSopenharmony_ci
156ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_103(&self, i_short: &i16) -> Result<i16> {
157ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_103(i_short)
158ca0551cfSopenharmony_ci    }
159ca0551cfSopenharmony_ci
160ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_104(&self, i_int: &i32) -> Result<i32> {
161ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_104(i_int)
162ca0551cfSopenharmony_ci    }
163ca0551cfSopenharmony_ci
164ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_105(&self, i_long: &i64) -> Result<i64> {
165ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_105(i_long)
166ca0551cfSopenharmony_ci    }
167ca0551cfSopenharmony_ci
168ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_106(&self, i_float: &f32) -> Result<f32> {
169ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_106(i_float)
170ca0551cfSopenharmony_ci    }
171ca0551cfSopenharmony_ci
172ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_107(&self, i_double: &f64) -> Result<f64> {
173ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_107(i_double)
174ca0551cfSopenharmony_ci    }
175ca0551cfSopenharmony_ci
176ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_108(&self, i_string: &str) -> Result<String> {
177ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_108(i_string)
178ca0551cfSopenharmony_ci    }
179ca0551cfSopenharmony_ci
180ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_199(&self, i_bool: &bool, i_long: &i64, i_float: &f32,
181ca0551cfSopenharmony_ci        i_double: &f64, i_string: &str) -> Result<bool> {
182ca0551cfSopenharmony_ci        self.0.idl_ipc_test_basic_199(i_bool, i_long, i_float, i_double,
183ca0551cfSopenharmony_ci                i_string)
184ca0551cfSopenharmony_ci    }
185ca0551cfSopenharmony_ci}
186ca0551cfSopenharmony_ci
187ca0551cfSopenharmony_ciimpl IIdlTestService for IdlTestServiceProxy {
188ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_001(&self) -> Result<()> {
189ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
190ca0551cfSopenharmony_ci        let _reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic001 as u32, &data, false)?;
191ca0551cfSopenharmony_ci        Ok(())
192ca0551cfSopenharmony_ci    }
193ca0551cfSopenharmony_ci
194ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_002(&self) -> Result<()> {
195ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
196ca0551cfSopenharmony_ci        let _reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic002 as u32, &data, true)?;
197ca0551cfSopenharmony_ci        Ok(())
198ca0551cfSopenharmony_ci    }
199ca0551cfSopenharmony_ci
200ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_101(&self, i_bool: &bool) -> Result<bool> {
201ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
202ca0551cfSopenharmony_ci        data.write(&i_bool)?;
203ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic101 as u32, &data, false)?;
204ca0551cfSopenharmony_ci        let result : bool = reply.read()?;
205ca0551cfSopenharmony_ci        Ok(result)
206ca0551cfSopenharmony_ci    }
207ca0551cfSopenharmony_ci
208ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_102(&self, i_byte: &i8) -> Result<i8> {
209ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
210ca0551cfSopenharmony_ci        data.write(&i_byte)?;
211ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic102 as u32, &data, false)?;
212ca0551cfSopenharmony_ci        let result : i8 = reply.read()?;
213ca0551cfSopenharmony_ci        Ok(result)
214ca0551cfSopenharmony_ci    }
215ca0551cfSopenharmony_ci
216ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_103(&self, i_short: &i16) -> Result<i16> {
217ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
218ca0551cfSopenharmony_ci        data.write(&i_short)?;
219ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic103 as u32, &data, false)?;
220ca0551cfSopenharmony_ci        let result : i16 = reply.read()?;
221ca0551cfSopenharmony_ci        Ok(result)
222ca0551cfSopenharmony_ci    }
223ca0551cfSopenharmony_ci
224ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_104(&self, i_int: &i32) -> Result<i32> {
225ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
226ca0551cfSopenharmony_ci        data.write(&i_int)?;
227ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic104 as u32, &data, false)?;
228ca0551cfSopenharmony_ci        let result : i32 = reply.read()?;
229ca0551cfSopenharmony_ci        Ok(result)
230ca0551cfSopenharmony_ci    }
231ca0551cfSopenharmony_ci
232ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_105(&self, i_long: &i64) -> Result<i64> {
233ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
234ca0551cfSopenharmony_ci        data.write(&i_long)?;
235ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic105 as u32, &data, false)?;
236ca0551cfSopenharmony_ci        let result : i64 = reply.read()?;
237ca0551cfSopenharmony_ci        Ok(result)
238ca0551cfSopenharmony_ci    }
239ca0551cfSopenharmony_ci
240ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_106(&self, i_float: &f32) -> Result<f32> {
241ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
242ca0551cfSopenharmony_ci        data.write(&i_float)?;
243ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic106 as u32, &data, false)?;
244ca0551cfSopenharmony_ci        let result : f32 = reply.read()?;
245ca0551cfSopenharmony_ci        Ok(result)
246ca0551cfSopenharmony_ci    }
247ca0551cfSopenharmony_ci
248ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_107(&self, i_double: &f64) -> Result<f64> {
249ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
250ca0551cfSopenharmony_ci        data.write(&i_double)?;
251ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic107 as u32, &data, false)?;
252ca0551cfSopenharmony_ci        let result : f64 = reply.read()?;
253ca0551cfSopenharmony_ci        Ok(result)
254ca0551cfSopenharmony_ci    }
255ca0551cfSopenharmony_ci
256ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_108(&self, i_string: &str) -> Result<String> {
257ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
258ca0551cfSopenharmony_ci        data.write(&i_string)?;
259ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic108 as u32, &data, false)?;
260ca0551cfSopenharmony_ci        let result : String = reply.read()?;
261ca0551cfSopenharmony_ci        Ok(result)
262ca0551cfSopenharmony_ci    }
263ca0551cfSopenharmony_ci
264ca0551cfSopenharmony_ci    fn idl_ipc_test_basic_199(&self, i_bool: &bool, i_long: &i64, i_float: &f32,
265ca0551cfSopenharmony_ci        i_double: &f64, i_string: &str) -> Result<bool> {
266ca0551cfSopenharmony_ci        let mut data = MsgParcel::new().expect("MsgParcel should success");
267ca0551cfSopenharmony_ci        data.write(&i_bool)?;
268ca0551cfSopenharmony_ci        data.write(&i_long)?;
269ca0551cfSopenharmony_ci        data.write(&i_float)?;
270ca0551cfSopenharmony_ci        data.write(&i_double)?;
271ca0551cfSopenharmony_ci        data.write(&i_string)?;
272ca0551cfSopenharmony_ci        let reply = self.remote.send_request(IIdlTestServiceCode::CodeIdlIpcTestBasic199 as u32, &data, false)?;
273ca0551cfSopenharmony_ci        let result : bool = reply.read()?;
274ca0551cfSopenharmony_ci        Ok(result)
275ca0551cfSopenharmony_ci    }
276ca0551cfSopenharmony_ci}
277