etcd_server.go 801 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package main
  2. import (
  3. "net/http"
  4. )
  5. type etcdServer struct {
  6. http.Server
  7. name string
  8. url string
  9. tlsConf *TLSConfig
  10. tlsInfo *TLSInfo
  11. }
  12. var e *etcdServer
  13. func newEtcdServer(name string, urlStr string, listenHost string, tlsConf *TLSConfig, tlsInfo *TLSInfo) *etcdServer {
  14. return &etcdServer{
  15. Server: http.Server{
  16. Handler: NewEtcdMuxer(),
  17. TLSConfig: &tlsConf.Server,
  18. Addr: listenHost,
  19. },
  20. name: name,
  21. url: urlStr,
  22. tlsConf: tlsConf,
  23. tlsInfo: tlsInfo,
  24. }
  25. }
  26. // Start to listen and response etcd client command
  27. func (e *etcdServer) ListenAndServe() {
  28. infof("etcd server [%s:%s]", e.name, e.url)
  29. if e.tlsConf.Scheme == "http" {
  30. fatal(e.Server.ListenAndServe())
  31. } else {
  32. fatal(e.Server.ListenAndServeTLS(e.tlsInfo.CertFile, e.tlsInfo.KeyFile))
  33. }
  34. }