OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / grandcat / zeroconf / examples / register / server.go
1 package main
2
3 import (
4         "flag"
5         "log"
6         "os"
7         "os/signal"
8         "syscall"
9
10         "time"
11
12         "github.com/grandcat/zeroconf"
13 )
14
15 var (
16         name     = flag.String("name", "GoZeroconfGo", "The name for the service.")
17         service  = flag.String("service", "_workstation._tcp", "Set the service type of the new service.")
18         domain   = flag.String("domain", "local.", "Set the network domain. Default should be fine.")
19         port     = flag.Int("port", 42424, "Set the port the service is listening to.")
20         waitTime = flag.Int("wait", 10, "Duration in [s] to publish service for.")
21 )
22
23 func main() {
24         flag.Parse()
25
26         server, err := zeroconf.Register(*name, *service, *domain, *port, []string{"txtv=0", "lo=1", "la=2"}, nil)
27         if err != nil {
28                 panic(err)
29         }
30         defer server.Shutdown()
31         log.Println("Published service:")
32         log.Println("- Name:", *name)
33         log.Println("- Type:", *service)
34         log.Println("- Domain:", *domain)
35         log.Println("- Port:", *port)
36
37         // Clean exit.
38         sig := make(chan os.Signal, 1)
39         signal.Notify(sig, os.Interrupt, syscall.SIGTERM)
40         // Timeout timer.
41         var tc <-chan time.Time
42         if *waitTime > 0 {
43                 tc = time.After(time.Second * time.Duration(*waitTime))
44         }
45
46         select {
47         case <-sig:
48                 // Exit by user
49         case <-tc:
50                 // Exit by timeout
51         }
52
53         log.Println("Shutting down.")
54 }