1/* 2 * Copyright (C) 2024 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 16import rpc from '@ohos.rpc'; 17import ApiMessage from '../common/apiMessage.ets'; 18import ApiResult from '../common/apiResult.ets'; 19import ReflectCallApi from './ReflectCallApi.ets'; 20import deviceinfo from '@ohos.deviceInfo' 21 22let CODE_INVOKE = 1; 23let CODE_INVOKE_TESTCASE = 99; 24let CODE_INVOKE_OSVERSION = 88; 25let logTag = "[RpcServer: ]"; 26 27export default class Stub extends rpc.RemoteObject { 28 constructor(descriptor) { 29 console.log(logTag +" Stub Create"); 30 super(descriptor); 31 } 32 33 onRemoteMessageRequest(code, data, reply, option) { 34 try { 35 console.log(logTag +' =================== onRemoteMessageRequest: code is " + code + " ==================='); 36 switch (code) { 37 case CODE_INVOKE: 38 { 39 console.info(logTag +' case CODE_INVOKE start'); 40 let testBundle = new ApiMessage(null, null, null, null, null, null, null); 41 data.readParcelable(testBundle); 42 43 let resultCall = new ApiResult(0,null); 44 var resCallApi = -1; 45 const reflectCallApi = new ReflectCallApi(); 46 resCallApi = reflectCallApi.call(testBundle); 47 console.log(logTag + '_methodName call success,result is ' + resCallApi); 48 if (resCallApi === 1) { 49 resultCall._resultCode = 1; 50 resultCall._result = 1; 51 } else { 52 resultCall._resultCode = -1; 53 resultCall._result = -1; 54 } 55 console.log(logTag + "The server's writeSequenceable result is ' + JSON.stringify(resultCall)"); 56 57 testBundle._apiResult=JSON.stringify(resultCall); 58 console.log(logTag + ' The testBundle is ' + JSON.stringify(testBundle)); 59 reply.writeParcelable(testBundle); 60 61 return true; 62 } 63 case CODE_INVOKE_TESTCASE: 64 { 65 console.info(logTag +' =================== case CODE_INVOKE_TESTCASE start =================== '); 66 let testBundle = new ApiMessage(null, null, null, null, null, null, null); 67 data.readSequenceable(testBundle); 68 69 let resultCall = new ApiResult(0,null); 70 resultCall._resultCode = 1; 71 resultCall._result = 1; 72 testBundle._apiResult=JSON.stringify(resultCall); 73 reply.writeParcelable(testBundle); 74 return true; 75 } 76 case CODE_INVOKE_OSVERSION: 77 { 78 console.info(logTag +' =================== case CODE_INVOKE_OSVERSION start =================== '); 79 data.readString(); 80 let osFullNameInfo = deviceinfo.osFullName; 81 console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); 82 reply.writeString(osFullNameInfo); 83 return true; 84 } 85 default: 86 console.error(logTag +' default case ' + code); 87 return super.onRemoteMessageRequest(code, data, reply, option); 88 } 89 } catch (error) { 90 console.log(logTag +'ERROR: onRemoteMessageRequest: ' + error.code + error.message); 91 } 92 return false; 93 } 94} 95