lib/discovery/ble: Export Driver.DebugString as a stat.
Change-Id: I4c74d0afd97053d4861355566c646065310a5d20
diff --git a/lib/discovery/plugins/ble/ble.go b/lib/discovery/plugins/ble/ble.go
index 76abf36..dad1926 100644
--- a/lib/discovery/plugins/ble/ble.go
+++ b/lib/discovery/plugins/ble/ble.go
@@ -5,12 +5,15 @@
package ble
import (
+ "fmt"
+ "runtime"
+ "sync"
"time"
"v.io/v23/context"
"v.io/v23/discovery"
-
idiscovery "v.io/x/ref/lib/discovery"
+ "v.io/x/ref/lib/stats"
)
const (
@@ -19,6 +22,11 @@
defaultTTL = 90 * time.Second
)
+var (
+ statMu sync.Mutex
+ statIdx int
+)
+
type plugin struct {
advertiser *advertiser
scanner *scanner
@@ -89,10 +97,18 @@
if err != nil {
return nil, err
}
+ statMu.Lock()
+ statName := fmt.Sprintf("discovery/ble/driver/%d", statIdx)
+ statIdx++
+ stats.NewStringFunc(statName, func() string {
+ return driver.DebugString()
+ })
+ statMu.Unlock()
p := &plugin{
advertiser: newAdvertiser(ctx, driver),
scanner: newScanner(ctx, driver, ttl),
adStopper: idiscovery.NewTrigger(),
}
+ runtime.SetFinalizer(p, func(p *plugin) { stats.Delete(statName) })
return p, nil
}