/*
* Copyright (C) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import rpc from '@ohos.rpc';
import ApiMessage from '../common/apiMessage.ets';
import ApiResult from '../common/apiResult.ets';
import ReflectCallApi from './ReflectCallApi.ets';
import deviceinfo from '@ohos.deviceInfo'
let CODE_INVOKE = 1;
let CODE_INVOKE_TESTCASE = 99;
let CODE_INVOKE_OSVERSION = 88;
let logTag = "[RpcServer: ]";
export default class Stub extends rpc.RemoteObject {
constructor(descriptor) {
console.log(logTag +" Stub Create");
super(descriptor);
}
onRemoteMessageRequest(code, data, reply, option) {
try {
console.log(logTag +' =================== onRemoteMessageRequest: code is " + code + " ===================');
switch (code) {
case CODE_INVOKE:
{
console.info(logTag +' case CODE_INVOKE start');
let testBundle = new ApiMessage(null, null, null, null, null, null, null);
data.readParcelable(testBundle);
let resultCall = new ApiResult(0,null);
var resCallApi = -1;
const reflectCallApi = new ReflectCallApi();
resCallApi = reflectCallApi.call(testBundle);
console.log(logTag + '_methodName call success,result is ' + resCallApi);
if (resCallApi === 1) {
resultCall._resultCode = 1;
resultCall._result = 1;
} else {
resultCall._resultCode = -1;
resultCall._result = -1;
}
console.log(logTag + "The server's writeSequenceable result is ' + JSON.stringify(resultCall)");
testBundle._apiResult=JSON.stringify(resultCall);
console.log(logTag + ' The testBundle is ' + JSON.stringify(testBundle));
reply.writeParcelable(testBundle);
return true;
}
case CODE_INVOKE_TESTCASE:
{
console.info(logTag +' =================== case CODE_INVOKE_TESTCASE start =================== ');
let testBundle = new ApiMessage(null, null, null, null, null, null, null);
data.readSequenceable(testBundle);
let resultCall = new ApiResult(0,null);
resultCall._resultCode = 1;
resultCall._result = 1;
testBundle._apiResult=JSON.stringify(resultCall);
reply.writeParcelable(testBundle);
return true;
}
case CODE_INVOKE_OSVERSION:
{
console.info(logTag +' =================== case CODE_INVOKE_OSVERSION start =================== ');
data.readString();
let osFullNameInfo = deviceinfo.osFullName;
console.info('the value of the deviceinfo osFullName is :' + osFullNameInfo);
reply.writeString(osFullNameInfo);
return true;
}
default:
console.error(logTag +' default case ' + code);
return super.onRemoteMessageRequest(code, data, reply, option);
}
} catch (error) {
console.log(logTag +'ERROR: onRemoteMessageRequest: ' + error.code + error.message);
}
return false;
}
}