• 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';
21import distributedObject from '@ohos.data.distributedDataObject';
22const TEST_BUNDLE_NAME = 'com.ohos.distributekvdisjs';
23let logTag = "[[RpcServer_TestApi:  ]]";
24let kvManager = undefined;
25let kvStore = undefined;
26let rdbStore = undefined;
27
28let g_object = undefined;
29let context = undefined;
30
31
32export default class TestApi{
33    constructor(){}
34    add(a,b) {
35        console.log(logTag+"_methodName is add");
36        return Number(a)+Number(b);
37    }
38    sub(a,b) {
39        console.log(logTag+"_methodName is sub");
40         return Number(a)-Number(b);
41    }
42
43    async startBackgroundRunning(){
44        console.info(logTag + " Server start background running started");
45        let wantAgentInfo = {
46            wants: [
47                {
48                    bundleName: TEST_BUNDLE_NAME,
49                    abilityName: "com.ohos.distributekvdisjs.ServiceAbility"
50                }
51            ],
52            operationType: wantAgent.OperationType.START_ABILITY,
53            requestCode: 0,
54            wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
55        };
56
57        await wantAgent.getWantAgent(wantAgentInfo).then(async (wantAgentObj) => {
58            console.info(logTag + " Server startBackgroundRunning get want agent success");
59            await backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
60                backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
61                console.info("Operation startBackgroundRunning succeeded");
62            }).catch((err) => {
63                console.error("Operation startBackgroundRunning failed Cause: " + err);
64            });
65        }).catch((err) => {
66            console.info(logTag + " Server startBackgroundRunning get want agent err: " + err);
67        });
68    }
69
70    async stopBackgroundRunning(){
71        backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
72            console.info("Operation stopBackgroundRunning succeeded");
73        }).catch((err) => {
74            console.error("Operation stopBackgroundRunning failed Cause: " + err);
75        });
76    }
77
78    async createKvManager(){
79        const config = {
80            bundleName: TEST_BUNDLE_NAME,
81            userInfo: {
82                userId: '0',
83                userType: disData.UserType.SAME_USER_ID
84            }
85        }
86        console.info(logTag + "_methodName is createKvManager");
87        await disData.createKVManager(config).then((manager) =>{
88            console.log(logTag + "Created KVManager success");
89            kvManager = manager;
90            return String(true);
91        }).catch((err) => {
92            console.log(logTag + "Failed to create KVManager: " + err );
93                return String(err);
94        });
95    }
96    async getKvStore(storeId,SecurityLevel,encrypt){
97        var optionsInfo = {
98            createIfMissing : true,
99            encrypt : false,
100            backup : false,
101            autoSync : true,
102            kvStoreType : disData.KVStoreType.SINGLE_VERSION,
103            schema : '',
104            securityLevel : disData.SecurityLevel.NO_LEVEL,
105        }
106        if(encrypt == "true"){
107            optionsInfo.encrypt = true;
108        }else{
109            optionsInfo.encrypt = false;
110        }
111        if(SecurityLevel == "S0"){
112            optionsInfo.securityLevel=disData.SecurityLevel.S0;
113        }else if(SecurityLevel == "S1"){
114            optionsInfo.securityLevel=disData.SecurityLevel.S1;
115        }else if(SecurityLevel == "S2"){
116            optionsInfo.securityLevel=disData.SecurityLevel.S2;
117        }else if(SecurityLevel == "S3"){
118            optionsInfo.securityLevel=disData.SecurityLevel.S3;
119        }else if(SecurityLevel == "S4"){
120            optionsInfo.securityLevel=disData.SecurityLevel.S4;
121        }else{
122            optionsInfo.securityLevel=disData.SecurityLevel.NO_LEVEL;
123        }
124
125        await kvManager.getKVStore(storeId,optionsInfo).then((store) =>{
126            kvStore = store;
127            console.info(logTag + " get kvStore success, security level is: " + optionsInfo.securityLevel);
128            return String(true);
129        }).catch((err) => {
130            return String(err);
131        });
132    }
133    async closeKvStore(storeId){
134        await kvManager.closeKVStore(TEST_BUNDLE_NAME,storeId,kvStore).then(async () => {
135            await kvManager.deleteKVStore(TEST_BUNDLE_NAME,storeId).then(() => {
136                console.info(logTag + " Server delete KVStore success");
137                return String(true);
138            })
139        }).catch((err) => {
140            return String(err);
141        });
142    }
143
144    async kvPut(key,value,valueType){
145        let putValue = undefined;
146        console.info(logTag + " putValue : " + putValue + "  value is: " + value + "  valueType is: " + valueType);
147        if(valueType == "String"){
148            putValue = value;
149        }else if(valueType == "Number"){
150            putValue = Number(value);
151        }else if(valueType == "Number_Min"){
152            putValue = Number.MIN_VALUE;
153        }else if(valueType == "Uint8Array"){
154            putValue = value.split(',');
155        }else if(valueType == "Boolean"){
156            if(value == "false"){
157                putValue = false;
158            }else{
159                putValue = Boolean(value);
160            }
161        }
162        console.info(logTag + " putValue : " + putValue + "  value is: " + value);
163        await kvStore.put(key,putValue).then(() =>  {
164            console.info(logTag + " Server  put data success ,key is : " + key + " value is: " + putValue);
165            return String(true);
166        }).catch((err) => {
167            console.info(logTag + "Server put data fail,err: " + err);
168            return String(err);
169        });
170    }
171     async kvGet(key,callback){
172        console.info(logTag + " kvGet start");
173        let errInfo = undefined;
174        let result = undefined;
175        kvStore.get(key, function (err, data){
176            errInfo = err;
177            result = data;
178        })
179        if(err != null){
180            console.info(logTag + " kvGet get data error: " + err);
181            callback(err);
182        }else{
183            console.info(logTag + " kvGet get data success");
184            callback(data);
185        }
186    }
187    async kvDelete(key){
188        await kvStore.delete(key).then(() => {
189            console.info(logTag + "Delete data success");
190            return String(true);
191        }).catch((err) => {
192            console.info(logTag + "Delete data error,errorInfo: " + err);
193            return String(err);
194
195        });
196    }
197
198    kvSync(deviceid,mode){
199        let syncMode = undefined;
200        if(mode == "PUSH"){
201            syncMode = disData.SyncMode.PUSH_ONLY;
202        }else if(mode == "PUSH_PULL"){
203            syncMode = disData.SyncMode.PUSH_PULL;
204        }
205        kvStore.Sync([deviceid],syncMode);
206        return JSON.stringify(syncMode);
207    }
208
209    async getRdbStore(rdbStoreName){
210        var storeConfig = {
211            name: rdbStoreName,
212        }
213        await dataRdb.getRdbStore(storeConfig,1).then((store) => {
214            console.info(logTag + " get rdbStore success");
215            rdbStore = store;
216            return String(true);
217        }).catch((err) => {
218            console.info(logTag + " get rdbStore error, err: " + err.code + err.message);
219            return String(err);
220        });
221    }
222
223    async createObject(objectname, age, isVis){
224        try{
225            console.info(logTag + "************* createObject begin ************* ");
226
227            console.info(logTag + "context 1= " + context);
228            context = featureAbility.getContext();
229            console.info(logTag + "context 2= " + context);
230            if (context == undefined || context == null) {
231                console.info(logTag + "error: context = undefined");
232                return false;
233            }
234
235            g_object = undefined;
236            let rename = objectname;
237            let reage = Number(age);
238            let reisVis = Boolean(isVis);
239
240            console.info(logTag + "objectname=" + objectname + "  age=" + age + "  isVis=" + isVis);
241            console.info(logTag + "rename=" + rename + "  reage=" + reage + "  reisVis=" + reisVis);
242
243            g_object = distributedObject.create(context, {name: rename, age: reage, isVis: reisVis});
244            if (g_object == undefined || g_object == null) {
245                console.info(logTag + "error:  g_object = undefined");
246                return false;
247            }
248            console.info(logTag + "createObject success");
249            console.info(logTag + g_object.name + "  " + g_object.age + "  " + g_object.isVis);
250
251        }catch (err) {
252            console.info(logTag + "createObject error, err: "+ err.code + err.message);
253        }
254    }
255
256    async setSessionId(sessionId){
257        try{
258            console.info(logTag + "************* setSessionId begin ************* ");
259            console.info(logTag +"g_object=" + g_object);
260            if (g_object == undefined || g_object == null) {
261                console.info(logTag + "error:  g_object = undefined");
262                return false;
263            }
264            g_object.setSessionId(sessionId).then(() => {
265                console.info(logTag + "remote join session success. sessionId=" + sessionId);
266            }).catch((error) => {
267                console.info(logTag + "remote join session error: " + error.code + error.message);
268                return false;
269            });
270        }catch (err) {
271            console.info(logTag + "setSessionId error, err: "+ err.code + err.message);
272        }
273    }
274
275    async objectPut(key,value){
276        console.info(logTag + "objectPut key=" + key + "  value=" + value );
277        if(key == "name"){
278            g_object.name = value;
279            console.info(logTag + "objectPut success. name=" + g_object.name);
280        }else if(key == "age"){
281            g_object.age = Number(value);
282            console.info(logTag + "objectPut success. age=" + g_object.age);
283        }else if(key == "isVis"){
284            if(value == "false"){
285                g_object.isVis = false;
286            }else{
287                g_object.isVis = Boolean(value);
288            }
289            console.info(logTag + "objectPut success. isVis=" + g_object.isVis);
290        }
291    }
292
293}
294