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