• 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'
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