etcd_server.go 954 B

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