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 16import rpc from '@ohos.rpc'; 17import ApiMessage from '../common/apiMessage.js'; 18import ApiResult from '../common/apiResult.js'; 19import ReflectCallApi from './ReflectCallApi.js'; 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 onRemoteRequest(code, data, reply, option) { 34 try { 35 console.log(logTag +" =================== onRemoteRequest: 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 var tmp = data.readSequenceable(testBundle); 42 console.log( logTag +" read result is " + tmp + JSON.stringify(testBundle)); 43 44 let resultCall = new ApiResult(); 45 var resCallApi = -1; 46 const reflectCallApi = new ReflectCallApi(); 47 resCallApi = reflectCallApi.call(testBundle); 48 console.log(logTag+"_methodName call success,result is "+resCallApi); 49 if (resCallApi == 1) { 50 resultCall._resultCode = true; 51 resultCall._result = 1; 52 } else { 53 resultCall._resultCode = false; 54 resultCall._result = -1; 55 } 56 console.log(logTag + "The server's writeSequenceable result is " + JSON.stringify(resultCall)); 57 58 testBundle._apiResult=JSON.stringify(resultCall); 59 console.log(logTag +" The testBundle is " + JSON.stringify(testBundle)); 60 let result = reply.writeSequenceable(testBundle); 61 console.log(logTag +" writeSequenceable result is " + result); 62 return true; 63 } 64 case CODE_INVOKE_TESTCASE: 65 { 66 console.info(logTag +" =================== case CODE_INVOKE_TESTCASE start =================== "); 67 let testBundle = new ApiMessage(null, null, null, null, null, null, null); 68 var tmp = data.readSequenceable(testBundle); 69 console.log( logTag +" read result is " + tmp + JSON.stringify(testBundle)); 70 71 let resultCall = new ApiResult(); 72 resultCall._resultCode = true; 73 resultCall._result = 1; 74 testBundle._apiResult=JSON.stringify(resultCall); 75 let result = reply.writeSequenceable(testBundle); 76 console.log(logTag +" writeSequenceable result is " + result); 77 return true; 78 } 79 case CODE_INVOKE_OSVERSION: 80 { 81 console.info(logTag +" =================== case CODE_INVOKE_OSVERSION start =================== "); 82 let tmp = data.readString(); 83 console.log(logTag +" readString tmp is " + tmp); 84 85 let osFullNameInfo = deviceinfo.osFullName; 86 console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo); 87 88 reply.writeString(osFullNameInfo); 89 console.log(logTag +" writeSequenceable result is " + tmp); 90 return true; 91 } 92 default: 93 console.error(logTag +" default case " + code); 94 return super.onRemoteRequest(code, data, reply, option); 95 } 96 } catch (error) { 97 console.log(logTag +"ERROR: onRemoteRequest: " + error); 98 } 99 return false; 100 } 101} 102