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 */ 15import disData from '@ohos.data.distributedData'; 16import backgroundTaskManager from '@ohos.backgroundTaskManager'; 17import featureAbility from '@ohos.ability.featureAbility'; 18import wantAgent from '@ohos.wantAgent'; 19import dataRdb from '@ohos.data.rdb'; 20import ApiResult from '../common/apiResult'; 21const TEST_BUNDLE_NAME = 'com.ohos.distributekvdisjs' 22var logTag = "RpcServer"; 23var kvManager = undefined; 24var kvStore = undefined; 25var rdbStore = undefined; 26 27 28export default class TestApi{ 29 constructor(){ 30 31 } 32 add(a,b) { 33 console.log(logTag+"_methodName is add"); 34 return Number(a)+Number(b); 35 } 36 sub(a,b) { 37 console.log(logTag+"_methodName is sub"); 38 return Number(a)-Number(b); 39 } 40 41 async startBackgroundRunning(){ 42 console.info(logTag + " Server start background running started") 43 let wantAgentInfo = { 44 wants: [ 45 { 46 bundleName: TEST_BUNDLE_NAME, 47 abilityName: "com.ohos.distributekvdisjs.ServiceAbility" 48 } 49 ], 50 operationType: wantAgent.OperationType.START_ABILITY, 51 requestCode: 0, 52 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 53 }; 54 55 await wantAgent.getWantAgent(wantAgentInfo).then(async (wantAgentObj) => { 56 console.info(logTag + " Server startBackgroundRunning get want agent success") 57 await backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), 58 backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { 59 console.info("Operation startBackgroundRunning succeeded"); 60 }).catch((err) => { 61 console.error("Operation startBackgroundRunning failed Cause: " + err); 62 }); 63 }).catch((err) => { 64 console.info(logTag + " Server startBackgroundRunning get want agent err: " + err) 65 }); 66 } 67 68 async stopBackgroundRunning(){ 69 backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { 70 console.info("Operation stopBackgroundRunning succeeded"); 71 }).catch((err) => { 72 console.error("Operation stopBackgroundRunning failed Cause: " + err); 73 }); 74 } 75 76 async createKvManager(){ 77 const config = { 78 bundleName: TEST_BUNDLE_NAME, 79 userInfo: { 80 userId: '0', 81 userType: disData.UserType.SAME_USER_ID 82 } 83 } 84 console.info(logTag + "_methodName is createKvManager") 85 await disData.createKVManager(config).then((manager) =>{ 86 console.log("Created KVManager success"); 87 kvManager = manager; 88 return 89 }).catch((err) => { 90 console.log("Failed to create KVManager: " + err ); 91 return; 92 }) 93 } 94 async getKvStore(storeId,SecurityLevel,encrypt){ 95 var optionsInfo = { 96 createIfMissing : true, 97 encrypt : false, 98 backup : false, 99 autoSync : true, 100 kvStoreType : disData.KVStoreType.SINGLE_VERSION, 101 schema : '', 102 securityLevel : disData.SecurityLevel.NO_LEVEL, 103 } 104 if(encrypt == "true"){ 105 optionsInfo.encrypt = true 106 }else{ 107 optionsInfo.encrypt = false 108 } 109 if(SecurityLevel == "S0"){ 110 optionsInfo.securityLevel=disData.SecurityLevel.S0 111 }else if(SecurityLevel == "S1"){ 112 optionsInfo.securityLevel=disData.SecurityLevel.S1 113 }else if(SecurityLevel == "S2"){ 114 optionsInfo.securityLevel=disData.SecurityLevel.S2 115 }else if(SecurityLevel == "S3"){ 116 optionsInfo.securityLevel=disData.SecurityLevel.S3 117 }else if(SecurityLevel == "S4"){ 118 optionsInfo.securityLevel=disData.SecurityLevel.S4 119 }else{ 120 optionsInfo.securityLevel=disData.SecurityLevel.NO_LEVEL 121 } 122 123 await kvManager.getKVStore(storeId,optionsInfo).then((store) =>{ 124 kvStore = store 125 console.info(logTag + " get kvStore success, security level is: " + optionsInfo.securityLevel) 126 return String(true) 127 }).catch((err) => { 128 return String(err) 129 }) 130 } 131 async closeKvStore(storeId){ 132 await kvManager.closeKVStore(TEST_BUNDLE_NAME,storeId,kvStore).then(async () => { 133 await kvManager.deleteKVStore(TEST_BUNDLE_NAME,storeId).then(() => { 134 console.info(logTag + " Server delete KVStore success") 135 return String(true) 136 }) 137 }).catch((err) => { 138 return String(err) 139 }) 140 } 141 142 async kvPut(key,value,valueType){ 143 let putValue = undefined; 144 console.info(logTag + " putValue : " + putValue + " value is: " + value + " valueType is: " + valueType); 145 if(valueType == "String"){ 146 putValue = value; 147 }else if(valueType == "Number"){ 148 putValue = Number(value); 149 }else if(valueType == "Number_Min"){ 150 putValue = Number.MIN_VALUE; 151 }else if(valueType == "Uint8Array"){ 152 putValue = value.split(','); 153 }else if(valueType == "Boolean"){ 154 if(value == "false"){ 155 putValue = false; 156 }else{ 157 putValue = Boolean(value); 158 } 159 } 160 console.info(logTag + " putValue : " + putValue + " value is: " + value); 161 await kvStore.put(key,putValue).then(() => { 162 console.info(logTag + " Server put data success ,key is : " + key + " value is: " + putValue); 163 return String(true); 164 }).catch((err) => { 165 console.info(logTag + "Server put data fail,err: " + err); 166 return String(err); 167 }); 168 } 169 async kvGet(key,callback){ 170 console.info(logTag + " kvGet start") 171 let errInfo = undefined; 172 let result = undefined 173 kvStore.get(key, function (err, data){ 174 errInfo = err; 175 result = data; 176 }) 177 if(err != null){ 178 console.info(logTag + " kvGet get data error: " + err) 179 callback(err) 180 }else{ 181 console.info(logTag + " kvGet get data success") 182 callback(data) 183 } 184 } 185 async kvDelete(key){ 186 await kvStore.delete(key).then(() => { 187 console.info(logTag + "Delete data success") 188 return String(true) 189 }).catch((err) => { 190 console.info(logTag + "Delete data error,errorInfo: " + err) 191 return String(err) 192 193 }) 194 } 195 196 kvSync(deviceid,mode){ 197 let syncMode = undefined; 198 if(mode == "PUSH"){ 199 syncMode = disData.SyncMode.PUSH_ONLY 200 }else if(mode == "PUSH_PULL"){ 201 syncMode = disData.SyncMode.PUSH_PULL 202 } 203 kvStore.Sync([deviceid],syncMode) 204 return JSON.stringify(syncMode) 205 } 206 207 async getRdbStore(rdbStoreName){ 208 var storeConfig = { 209 name: rdbStoreName, 210 } 211 await dataRdb.getRdbStore(storeConfig,1).then((store) => { 212 console.info(logTag + " get rdbStore success") 213 rdbStore = store; 214 return String(true) 215 }).catch((err) => { 216 console.info(logTag + " get rdbStore error, err: " + err) 217 return String(err) 218 }) 219 } 220} 221