Skip to content

Commit

Permalink
Reintroduce event queueing for central manager delegate wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
exPHAT committed Dec 29, 2023
1 parent 2ba702d commit 826d568
Showing 1 changed file with 34 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,69 +11,84 @@ class CentralManagerDelegateWrapper: NSObject, CBCentralManagerDelegate {
// MARK: - CBCentralManagerDelegate conformance
func centralManagerDidUpdateState(_ central: CBCentralManager) {
guard let parent = self.parent else { return }

parent.eventSubscriptions.recieve(.stateUpdated(parent.state))
parent.delegate?.centralManagerDidUpdateState(parent)
parent.eventQueue.async {
parent.eventSubscriptions.recieve(.stateUpdated(parent.state))
parent.delegate?.centralManagerDidUpdateState(parent)
}
}

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)

parent.connectedPeripherals.insert(peripheral)
parent.eventSubscriptions.recieve(.connected(peripheral))
parent.delegate?.centralManager(parent, didConnect: peripheral)
parent.eventQueue.async {
parent.connectedPeripherals.insert(peripheral)
parent.eventSubscriptions.recieve(.connected(peripheral))
parent.delegate?.centralManager(parent, didConnect: peripheral)
}
}

func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)

parent.connectedPeripherals.remove(peripheral)
parent.eventSubscriptions.recieve(.disconnected(peripheral, error))
peripheral.eventSubscriptions.recieve(.didDisconnect(error))
parent.delegate?.centralManager(parent, didDisconnectPeripheral: peripheral, error: error)
parent.eventQueue.async {
parent.connectedPeripherals.remove(peripheral)
parent.eventSubscriptions.recieve(.disconnected(peripheral, error))
peripheral.eventSubscriptions.recieve(.didDisconnect(error))
parent.delegate?.centralManager(parent, didDisconnectPeripheral: peripheral, error: error)

parent.removePeripheral(peripheral.cbPeripheral)
parent.removePeripheral(peripheral.cbPeripheral)
}
}

func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)

parent.eventSubscriptions.recieve(.failToConnect(peripheral, error))
parent.delegate?.centralManager(parent, didFailToConnect: peripheral, error: error)
parent.eventQueue.async {
parent.eventSubscriptions.recieve(.failToConnect(peripheral, error))
parent.delegate?.centralManager(parent, didFailToConnect: peripheral, error: error)
}
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi RSSI: NSNumber) {

Check warning on line 55 in Sources/SwiftBluetooth/CentralManager/CentralManagerDelegateWrapper.swift

View workflow job for this annotation

GitHub Actions / lint

Line Length Violation: Line should be 120 characters or less; currently it has 147 characters (line_length)
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)
peripheral.discovery = .init(rssi: RSSI, advertisementData: advertisementData)

parent.eventSubscriptions.recieve(.discovered(peripheral, advertisementData, RSSI))
parent.delegate?.centralManager(parent, didDiscover: peripheral, advertisementData: advertisementData, rssi: RSSI)
parent.eventQueue.async {
parent.eventSubscriptions.recieve(.discovered(peripheral, advertisementData, RSSI))
parent.delegate?.centralManager(parent, didDiscover: peripheral, advertisementData: advertisementData, rssi: RSSI)

Check warning on line 62 in Sources/SwiftBluetooth/CentralManager/CentralManagerDelegateWrapper.swift

View workflow job for this annotation

GitHub Actions / lint

Line Length Violation: Line should be 120 characters or less; currently it has 126 characters (line_length)
}
}

func centralManager(_ central: CBCentralManager, willRestoreState dict: [String: Any]) {
guard let parent = parent else { return }

parent.eventSubscriptions.recieve(.restoreState(dict))
parent.delegate?.centralManager(parent, willRestoreState: dict)
parent.eventQueue.async {
parent.eventSubscriptions.recieve(.restoreState(dict))
parent.delegate?.centralManager(parent, willRestoreState: dict)
}
}

#if os(iOS)
func centralManager(_ central: CBCentralManager, connectionEventDidOccur event: CBConnectionEvent, for peripheral: CBPeripheral) {
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)

parent.delegate?.centralManager(parent, connectionEventDidOccur: event, for: peripheral)
parent.eventQueue.async {
parent.delegate?.centralManager(parent, connectionEventDidOccur: event, for: peripheral)
}
}

func centralManager(_ central: CBCentralManager, didUpdateANCSAuthorizationFor peripheral: CBPeripheral) {
guard let parent = parent else { return }
let peripheral = parent.peripheral(peripheral)

parent.delegate?.centralManager(parent, didUpdateANCSAuthorizationFor: peripheral)
parent.eventQueue.async {
parent.delegate?.centralManager(parent, didUpdateANCSAuthorizationFor: peripheral)
}
}
#endif
}

0 comments on commit 826d568

Please sign in to comment.