1/** 2 * Copyright (c) 2024 SwanLink (Jiangsu) Technology Development 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 { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope, worker } from '@kit.ArkTS'; 17import { ImplISendableClass } from '../../test/utils/workerCommon'; 18 19const workerPort: ThreadWorkerGlobalScope = worker.workerPort; 20 21declare class ArkTools { 22 static forceFullGC(): void; 23} 24 25/** 26 * Defines the event handler to be called when the worker thread receives a message sent by the host thread. 27 * The event handler is executed in the worker thread. 28 * 29 * @param e message data 30 */ 31workerPort.onmessage = (e: MessageEvents) => { 32 let data = e.data as ImplISendableClass; 33 data.count = 2; 34 ArkTools.forceFullGC(); 35 workerPort.postMessageWithSharedSendable(data); 36} 37 38/** 39 * Defines the event handler to be called when the worker receives a message that cannot be deserialized. 40 * The event handler is executed in the worker thread. 41 * 42 * @param e message data 43 */ 44workerPort.onmessageerror = (e: MessageEvents) => { 45} 46 47/** 48 * Defines the event handler to be called when an exception occurs during worker execution. 49 * The event handler is executed in the worker thread. 50 * 51 * @param e error message 52 */ 53workerPort.onerror = (e: ErrorEvent) => { 54}