diff options
author | Christian Pointner <equinox@helsinki.at> | 2015-12-03 15:36:25 (GMT) |
---|---|---|
committer | Christian Pointner <equinox@helsinki.at> | 2015-12-03 15:36:25 (GMT) |
commit | 96f34d1d2eb0617ce832eb60325360ed208db5e0 (patch) | |
tree | 87f6fa9dd43b99d9c46312110899286ddf8ebc32 /src/helsinki.at/rhimportd/rhimportd.go | |
parent | 06ed087d55a9814bf908f8b455b465d3a7d41710 (diff) |
moved some code to seperate package
Diffstat (limited to 'src/helsinki.at/rhimportd/rhimportd.go')
-rw-r--r-- | src/helsinki.at/rhimportd/rhimportd.go | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/src/helsinki.at/rhimportd/rhimportd.go b/src/helsinki.at/rhimportd/rhimportd.go index 01092ef..a2bce7b 100644 --- a/src/helsinki.at/rhimportd/rhimportd.go +++ b/src/helsinki.at/rhimportd/rhimportd.go @@ -26,12 +26,15 @@ package main import ( "flag" - "fmt" - "html" - "net/http" - _ "net/http/pprof" + "helsinki.at/rhimport" + "log" + "os" + "os/signal" + "sync" ) +var rhl = log.New(os.Stderr, "[rhimportd]\t", log.LstdFlags) + func main() { addr_s := flag.String("addr", ":4000", "addr:port to listen on, default: ':4000'") help := flag.Bool("help", false, "show usage") @@ -42,9 +45,30 @@ func main() { return } - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) - }) + var wg sync.WaitGroup + + wg.Add(1) + go func() { + defer wg.Done() + rhl.Println("start web-srv") + rhimport.ServeWeb(*addr_s) + rhl.Println("web finished") + }() + + alldone := make(chan bool) + go func() { + defer func() { alldone <- true }() + wg.Wait() + }() + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) - http.ListenAndServe(*addr_s, nil) + select { + case <-c: + rhl.Println("received interrupt, shutdown") + return + case <-alldone: + return + } } |