From 982d9481a31d0e42ee80b0031259fef01bca349d Mon Sep 17 00:00:00 2001 From: dongzhengkuan Date: Sat, 26 Aug 2023 09:32:40 +0800 Subject: [PATCH] update printExtension Signed-off-by:dongzhengkuan@huawei.com Signed-off-by: dongzhengkuan --- .../main/ets/common/LocalDiscoverySession.ts | 24 +++++++++++++------ .../common/connect/P2pPrinterConnection.ts | 3 +++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/feature/ippPrint/src/main/ets/common/LocalDiscoverySession.ts b/feature/ippPrint/src/main/ets/common/LocalDiscoverySession.ts index 2312117..63d59bd 100644 --- a/feature/ippPrint/src/main/ets/common/LocalDiscoverySession.ts +++ b/feature/ippPrint/src/main/ets/common/LocalDiscoverySession.ts @@ -26,6 +26,8 @@ import print from '@ohos.print'; import type { WifiListener } from './model/WifiModel'; import CommonEventManager from '@ohos.commonEventManager'; import HashSet from '@ohos.util.HashSet'; +import taskpool from '@ohos.taskpool'; +import type { PrinterInfo } from '@ohos/common'; const TAG = 'LocalDiscoverySession'; @@ -179,16 +181,13 @@ export class LocalDiscoverySession implements Listener, WifiListener { return; } let localPrinter: LocalPrinter = undefined; - if (this.mPrinters.has(printer.getPath())) { - localPrinter = this.mPrinters.get(printer.getPath()); - } else { - localPrinter = new LocalPrinter(this.mPrintServiceAdapter, this, printer); - } + localPrinter = new LocalPrinter(this.mPrintServiceAdapter, this, printer); this.mPrinters.set(printer.getPath(), localPrinter); // 构建printerInfo const printerInfo = localPrinter.createPrinterInfo(); - print.addPrinters([printerInfo]).then((result) => { + let task = new taskpool.Task(addPrinters, [printerInfo]); + taskpool.execute(task).then((result) => { Log.info(TAG, 'add printer result: ' + result); }).catch((error) => { Log.error(TAG, 'add printer error: ' + JSON.stringify(error)); @@ -204,7 +203,8 @@ export class LocalDiscoverySession implements Listener, WifiListener { onPrinterLost(printer: DiscoveredPrinter): void { // this.mPrinters.delete(printer.getPath()); // 打印机丢失 - print.removePrinters([printer.getId()]).then((result) => { + let task = new taskpool.Task(removePrinters, [printer.getId()]); + taskpool.execute(task).then((result) => { Log.info(TAG, 'remove printer result: ' + result); }).catch((error) => { Log.error(TAG, 'remove printer error ' + JSON.stringify(error)); @@ -224,4 +224,14 @@ export class LocalDiscoverySession implements Listener, WifiListener { this.mPrintServiceAdapter.mdnsDiscovery.clearPrinterMap(true); } } +} + +async function addPrinters(printerInfos :PrinterInfo[]) { + 'use concurrent'; + return await print.addPrinters(printerInfos); +} + +async function removePrinters(printerIds :string[]) { + 'use concurrent'; + return await print.removePrinters(printerIds); } \ No newline at end of file diff --git a/feature/ippPrint/src/main/ets/common/connect/P2pPrinterConnection.ts b/feature/ippPrint/src/main/ets/common/connect/P2pPrinterConnection.ts index 380deaf..75b41e4 100644 --- a/feature/ippPrint/src/main/ets/common/connect/P2pPrinterConnection.ts +++ b/feature/ippPrint/src/main/ets/common/connect/P2pPrinterConnection.ts @@ -95,6 +95,9 @@ export default class P2PPrinterConnection implements WifiListener { } public close(): void { + if (this.inviteDelayTimer !== undefined) { + clearTimeout(this.inviteDelayTimer); + } if (this.delayTimer !== undefined) { clearTimeout(this.delayTimer); } -- Gitee