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 DataWorkerWrapper, { DataWorkerTask } from './DataWorkerWrapper' 18import WorkerWrapper, { WorkerMessage } from './base/WorkerWrapper' 19import WorkerTask from './base/WorkerTask' 20import HiLog from '../utils/HiLog'; 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(workerPort: ThreadWorkerGlobalScope, message: MessageEvents): WorkerTask { 37 let data = <WorkerMessage> message.data; 38 let type = data.type; 39 HiLog.i(TAG, `getTask in ${WorkerType[type]}.`) 40 let task: WorkerTask = null; 41 if (type == WorkerType.DataWorker) { 42 HiLog.w(TAG, 'getTask ' + type); 43 task = DataWorkerTask.getInstance(workerPort); 44 } 45 HiLog.w(TAG, 'getTask end') 46 return task; 47 } 48 49 /** 50 * Get the Worker Wrapper obj 51 * 52 * @param type WorkerType 53 * @return WorkerWrapper for the WorkerType 54 */ 55 static getWorker(type: WorkerType): WorkerWrapper { 56 HiLog.i(TAG, `getWorker in ${WorkerType[type]}.`) 57 let worker: WorkerWrapper = null; 58 if (type == WorkerType.DataWorker) { 59 HiLog.w(TAG, 'getWorker ' + type) 60 worker = DataWorkerWrapper.getInstance(); 61 } 62 HiLog.w(TAG, 'getWorker end') 63 return worker; 64 } 65}