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 */ 15 16import { ThreadWorkerGlobalScope, MessageEvents } from '@ohos.worker'; 17import { HiLog } from '../../../../../common' 18import { DataWorkerTask } from './DataWorkerTask' 19import WorkerWrapper, { WorkerMessage } from './base/WorkerWrapper' 20import WorkerTask from './base/WorkerTask' 21 22const TAG = 'WorkFactory' 23 24export enum WorkerType { 25 DataWorker, 26} 27 28export default class WorkFactory { 29 /** 30 * Get the Task for worker 31 * 32 * @param workerPort ThreadWorkerGlobalScope 33 * @param message worker message data 34 * @return WorkerTask for the message 35 */ 36 static getTask(type: WorkerType, workerPort?: ThreadWorkerGlobalScope): WorkerTask { 37 HiLog.i(TAG, `getTask in ${WorkerType[type]}.`) 38 let task: WorkerTask = undefined; 39 if (type == WorkerType.DataWorker) { 40 task = DataWorkerTask.getInstance(workerPort); 41 } 42 HiLog.w(TAG, 'getTask end') 43 return task; 44 } 45 46 /** 47 * Get the Worker Wrapper obj 48 * 49 * @param type WorkerType 50 * @return WorkerWrapper for the WorkerType 51 */ 52 static getWorker(type: WorkerType): WorkerWrapper { 53 HiLog.i(TAG, `getWorker in ${WorkerType[type]}.`) 54 let worker: WorkerWrapper = undefined 55 if (type == WorkerType.DataWorker) { 56 HiLog.w(TAG, 'getWorker ' + type) 57 worker = new WorkerWrapper(WorkerType.DataWorker, globalThis.config.useDataWorker); 58 } 59 HiLog.w(TAG, 'getWorker end') 60 return worker; 61 } 62}