OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / github.com / grandcat / zeroconf / examples / proxyservice / server.go
diff --git a/vendor/github.com/grandcat/zeroconf/examples/proxyservice/server.go b/vendor/github.com/grandcat/zeroconf/examples/proxyservice/server.go
new file mode 100644 (file)
index 0000000..92f4d87
--- /dev/null
@@ -0,0 +1,58 @@
+package main
+
+import (
+       "flag"
+       "log"
+       "os"
+       "os/signal"
+       "syscall"
+
+       "time"
+
+       "github.com/grandcat/zeroconf"
+)
+
+var (
+       name     = flag.String("name", "GoZeroconfGo", "The name for the service.")
+       service  = flag.String("service", "_workstation._tcp", "Set the service type of the new service.")
+       domain   = flag.String("domain", "local.", "Set the network domain. Default should be fine.")
+       host     = flag.String("host", "pc1", "Set host name for service.")
+       ip       = flag.String("ip", "::1", "Set IP a service should be reachable.")
+       port     = flag.Int("port", 42424, "Set the port the service is listening to.")
+       waitTime = flag.Int("wait", 10, "Duration in [s] to publish service for.")
+)
+
+func main() {
+       flag.Parse()
+
+       server, err := zeroconf.RegisterProxy(*name, *service, *domain, *port, *host, []string{*ip}, []string{"txtv=0", "lo=1", "la=2"}, nil)
+       if err != nil {
+               panic(err)
+       }
+       defer server.Shutdown()
+       log.Println("Published proxy service:")
+       log.Println("- Name:", *name)
+       log.Println("- Type:", *service)
+       log.Println("- Domain:", *domain)
+       log.Println("- Port:", *port)
+       log.Println("- Host:", *host)
+       log.Println("- IP:", *ip)
+
+       // Clean exit.
+       sig := make(chan os.Signal, 1)
+       signal.Notify(sig, os.Interrupt, syscall.SIGTERM)
+       // Timeout timer.
+       var tc <-chan time.Time
+       if *waitTime > 0 {
+               tc = time.After(time.Second * time.Duration(*waitTime))
+       }
+
+       select {
+       case <-sig:
+               // Exit by user
+       case <-tc:
+               // Exit by timeout
+       }
+
+       log.Println("Shutting down.")
+}