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  }