@@ -19,12 +19,11 @@ package main
1919
2020import (
2121 "context"
22- "fmt"
2322 "os"
2423 "strconv"
2524
26- discovery "github.com/arduino/dummy-discovery"
2725 properties "github.com/arduino/go-properties-orderedmap"
26+ discovery "github.com/arduino/pluggable-discovery-protocol-handler"
2827 "github.com/brutella/dnssd"
2928)
3029
@@ -38,7 +37,7 @@ func main() {
3837const mdnsServiceName = "_arduino._tcp.local."
3938
4039type MDNSDiscovery struct {
41- started bool
40+ cancelFunc func ()
4241}
4342
4443func (d * MDNSDiscovery ) Hello (userAgent string , protocolVersion int ) error {
@@ -50,14 +49,21 @@ func (d *MDNSDiscovery) Start() error {
5049}
5150
5251func (d * MDNSDiscovery ) Stop () error {
52+ if d .cancelFunc != nil {
53+ d .cancelFunc ()
54+ d .cancelFunc = nil
55+ }
5356 return nil
5457}
5558
59+ func (d * MDNSDiscovery ) Quit () {
60+ }
61+
5662func (d * MDNSDiscovery ) List () ([]* discovery.Port , error ) {
5763 return []* discovery.Port {}, nil
5864}
5965
60- func (d * MDNSDiscovery ) StartSync (eventCB discovery.EventCallback ) ( chan <- bool , error ) {
66+ func (d * MDNSDiscovery ) StartSync (eventCB discovery.EventCallback , errorCB discovery. ErrorCallback ) error {
6167 addFn := func (srv dnssd.Service ) {
6268 eventCB ("add" , newBoardPortJSON (& srv ))
6369 }
@@ -68,20 +74,11 @@ func (d *MDNSDiscovery) StartSync(eventCB discovery.EventCallback) (chan<- bool,
6874
6975 go func () {
7076 if err := dnssd .LookupType (ctx , mdnsServiceName , addFn , remFn ); err != nil {
71- _ = err // TODO: report ERROR
77+ errorCB ( "mdns lookup error: " + err . Error ())
7278 }
73- fmt .Println ("CANCELED!" )
7479 }()
75-
76- closeChan := make (chan bool )
77- go func () {
78- for range closeChan {
79- cancel ()
80- return
81- }
82- }()
83-
84- return closeChan , nil
80+ d .cancelFunc = cancel
81+ return nil
8582}
8683
8784func newBoardPortJSON (port * dnssd.Service ) * discovery.Port {
@@ -91,7 +88,7 @@ func newBoardPortJSON(port *dnssd.Service) *discovery.Port {
9188 }
9289
9390 props := properties .NewMap ()
94- props .Set ("ttl" , port .TTL .String ( ))
91+ props .Set ("ttl" , strconv . Itoa ( int ( port .TTL .Seconds ()) ))
9592 props .Set ("hostname" , port .Hostname ())
9693 props .Set ("port" , strconv .Itoa (port .Port ))
9794 for key , value := range port .Text {
0 commit comments