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