32 lines
619 B
Swift
32 lines
619 B
Swift
//
|
|
// HolerManager.swift
|
|
// sdlan
|
|
//
|
|
// Created by 安礼成 on 2025/7/14.
|
|
//
|
|
import Foundation
|
|
|
|
actor HolerManager {
|
|
private var holers: [Data:Task<(), Never>] = [:]
|
|
|
|
func addHoler(dstMac: Data, creator: @escaping () -> Task<(), Never>) {
|
|
if let task = self.holers[dstMac] {
|
|
if task.isCancelled {
|
|
self.holers[dstMac] = creator()
|
|
}
|
|
} else {
|
|
self.holers[dstMac] = creator()
|
|
}
|
|
}
|
|
|
|
func cleanup() {
|
|
for holer in holers.values {
|
|
holer.cancel()
|
|
}
|
|
self.holers.removeAll()
|
|
}
|
|
|
|
}
|
|
|
|
|