From 0f7e0b384a931c66a46c49f2266e796a7013e7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=AE=E6=9D=B0=E8=BE=89?= Date: Wed, 5 Feb 2025 10:32:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0watcher=E7=9A=84?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E5=81=9C=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- device_watcher.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/device_watcher.go b/device_watcher.go index 1d56ec2..c40eab5 100644 --- a/device_watcher.go +++ b/device_watcher.go @@ -39,7 +39,8 @@ func (s DeviceStateChangedEvent) WentOffline() bool { } type deviceWatcherImpl struct { - server server + server server + scanner wire.Scanner // If an error occurs, it is stored here and eventChan is close immediately after. err atomic.Value @@ -80,7 +81,9 @@ func (w *DeviceWatcher) Err() error { // Shutdown stops the watcher from listening for events and closes the channel returned // from C. func (w *DeviceWatcher) Shutdown() { - // TODO(z): Implement. + if w.scanner != nil { + w.scanner.Close() + } } func (w *deviceWatcherImpl) reportErr(err error) { @@ -111,6 +114,7 @@ func publishDevices(watcher *deviceWatcherImpl) { watcher.reportErr(err) return } + watcher.scanner = scanner finished, err = publishDevicesUntilError(scanner, watcher.eventChan, &lastKnownStates)