From ddda0203835f5e415faed204020d0a41c625f0ad Mon Sep 17 00:00:00 2001 From: David Dias Date: Wed, 1 Jul 2015 10:06:25 -0700 Subject: [PATCH 1/3] complete the example on the readme --- README.md | 61 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 80f3d90..bc4efba 100644 --- a/README.md +++ b/README.md @@ -11,27 +11,54 @@ environments. Using the library is very simple, here is an example of publishing a service entry: - // Setup our service export - host, _ := os.Hostname() - info := []string{"My awesome service"}, - service, _ := NewMDNSService(host, "_foobar._tcp", "", "", 8000, nil, info) +``` +package main - // Create the mDNS server, defer shutdown - server, _ := mdns.NewServer(&mdns.Config{Zone: service}) - defer server.Shutdown() +import ( + "github.com/hashicorp/mdns" + "os" +) +func main() { + + // Setup our service export + host, _ := os.Hostname() + info := []string{"My awesome service"} + service, _ := mdns.NewMDNSService(host, "_foobar._tcp", "", "", 8000, nil, info) + + // Create the mDNS server, defer shutdown + server, _ := mdns.NewServer(&mdns.Config{Zone: service}) + + defer server.Shutdown() +} +``` Doing a lookup for service providers is also very simple: - // Make a channel for results and start listening - entriesCh := make(chan *mdns.ServiceEntry, 4) - go func() { - for entry := range entriesCh { - fmt.Printf("Got new entry: %v\n", entry) - } - }() +``` +package main + +import ( + "fmt" + "github.com/cryptix/mdns" +) + +func main() { + + // Make a channel for results and start listening + entriesCh := make(chan *mdns.ServiceEntry, 8) + go func() { + for entry := range entriesCh { + fmt.Printf("Got new entry: %v\n", entry) + } + }() - // Start the lookup - mdns.Lookup("_foobar._tcp", entriesCh) - close(entriesCh) + // Start the lookup + err := mdns.Lookup("_foobar._tcp", entriesCh) + if err != nil { + fmt.Println(err) + } + close(entriesCh) +} +``` From e47fc6724c474fa4751219a7cd878e19534e423c Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Wed, 1 Jul 2015 12:08:57 -0700 Subject: [PATCH 2/3] add working example code it is useful to have working example code directly in the repository, for easy testing. --- client/.gitignore | 1 + client/main.go | 36 ++++++++++++++++++++++++++++++++++++ service/.gitignore | 1 + service/main.go | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 client/.gitignore create mode 100644 client/main.go create mode 100644 service/.gitignore create mode 100644 service/main.go diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000..b051c6c --- /dev/null +++ b/client/.gitignore @@ -0,0 +1 @@ +client diff --git a/client/main.go b/client/main.go new file mode 100644 index 0000000..5956a9c --- /dev/null +++ b/client/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "os" + "os/signal" + + "github.com/cryptix/mdns" +) + +func main() { + + // Make a channel for results and start listening + entriesCh := make(chan *mdns.ServiceEntry, 8) + defer close(entriesCh) + + go func() { + for entry := range entriesCh { + fmt.Printf("Got new entry: %v\n", entry) + } + }() + + // Start the lookup + err := mdns.Lookup("_foobar._tcp", entriesCh) + if err != nil { + fmt.Println(err) + } + + wait() +} + +func wait() { + ch := make(chan os.Signal) + signal.Notify(ch, os.Interrupt, os.Kill) + <-ch +} diff --git a/service/.gitignore b/service/.gitignore new file mode 100644 index 0000000..24e1098 --- /dev/null +++ b/service/.gitignore @@ -0,0 +1 @@ +service diff --git a/service/main.go b/service/main.go new file mode 100644 index 0000000..7850d47 --- /dev/null +++ b/service/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "log" + "os" + "os/signal" + + "github.com/hashicorp/mdns" +) + +func main() { + + // Setup our service export + host, err := os.Hostname() + if err != nil { + log.Fatal(err) + } + + info := []string{"My awesome service"} + service, err := mdns.NewMDNSService(host, "_foobar._tcp", "", "", 8000, nil, info) + if err != nil { + log.Fatal(err) + } + + // Create the mDNS server, defer shutdown + server, err := mdns.NewServer(&mdns.Config{Zone: service}) + if err != nil { + log.Fatal(err) + } + + defer server.Shutdown() + + wait() +} + +func wait() { + ch := make(chan os.Signal) + signal.Notify(ch, os.Interrupt, os.Kill) + <-ch +} From b1580b46e720b44c57a72f11bc9c4ad8b9089353 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Wed, 1 Jul 2015 12:15:34 -0700 Subject: [PATCH 3/3] have working examples in the repo It is very useful to have working examples of libraries in their repositories. this makes it trivial to fire up and test. When trying to debug with adversarial networks, it is nice to minimize the problem surface :) --- client/README.md | 17 +++++++++++++++++ client/main.go | 9 +++++++-- service/README.md | 18 ++++++++++++++++++ service/main.go | 7 ++++++- 4 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 client/README.md create mode 100644 service/README.md diff --git a/client/README.md b/client/README.md new file mode 100644 index 0000000..cde54ef --- /dev/null +++ b/client/README.md @@ -0,0 +1,17 @@ +# client + +[Run the service first](../service) + +Then, compile + run: + +``` +go build +./client +``` + +Check out other services: + +``` +./client +./client _foobarbaz._tcp +``` diff --git a/client/main.go b/client/main.go index 5956a9c..9dea176 100644 --- a/client/main.go +++ b/client/main.go @@ -10,6 +10,11 @@ import ( func main() { + serviceTag := "_foobar._tcp" + if len(os.Args) > 1 { + serviceTag = os.Args[1] + } + // Make a channel for results and start listening entriesCh := make(chan *mdns.ServiceEntry, 8) defer close(entriesCh) @@ -20,8 +25,8 @@ func main() { } }() - // Start the lookup - err := mdns.Lookup("_foobar._tcp", entriesCh) + // Start the lookups + err := mdns.Lookup(serviceTag, entriesCh) if err != nil { fmt.Println(err) } diff --git a/service/README.md b/service/README.md new file mode 100644 index 0000000..5f54edb --- /dev/null +++ b/service/README.md @@ -0,0 +1,18 @@ +# service + +Compile + run: + +``` +go build +./service +``` + +[The, run the client](../service) + + +Use another service tag + +``` +./service +./service _foobarbaz._tcp +``` diff --git a/service/main.go b/service/main.go index 7850d47..c96a130 100644 --- a/service/main.go +++ b/service/main.go @@ -10,6 +10,11 @@ import ( func main() { + serviceTag := "_foobar._tcp" + if len(os.Args) > 1 { + serviceTag = os.Args[1] + } + // Setup our service export host, err := os.Hostname() if err != nil { @@ -17,7 +22,7 @@ func main() { } info := []string{"My awesome service"} - service, err := mdns.NewMDNSService(host, "_foobar._tcp", "", "", 8000, nil, info) + service, err := mdns.NewMDNSService(host, serviceTag, "", "", 8000, nil, info) if err != nil { log.Fatal(err) }