github.com/Cloud-Foundations/Dominator@v0.3.4/sub/httpd/api.go (about) 1 package httpd 2 3 import ( 4 "io" 5 "net/http" 6 7 "github.com/Cloud-Foundations/Dominator/lib/html" 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 "github.com/Cloud-Foundations/Dominator/lib/net/reverseconnection" 10 "github.com/Cloud-Foundations/tricorder/go/tricorder" 11 ) 12 13 type HtmlWriter interface { 14 WriteHtml(writer io.Writer) 15 } 16 17 var htmlWriters []HtmlWriter 18 19 func StartServer(portNum uint, logger log.DebugLogger) error { 20 listener, err := reverseconnection.Listen("tcp", portNum, logger) 21 if err != nil { 22 return err 23 } 24 if err := listener.RequestConnections("Dominator"); err != nil { 25 return err 26 } 27 err = listener.RequestConnections(tricorder.CollectorServiceName) 28 if err != nil { 29 return err 30 } 31 html.HandleFunc("/", statusHandler) 32 go http.Serve(listener, nil) 33 return nil 34 } 35 36 func AddHtmlWriter(htmlWriter HtmlWriter) { 37 htmlWriters = append(htmlWriters, htmlWriter) 38 }