https://github.com/etcd-io/etcd
Revision 0facc24016fbfd980eda11d36cac1a2fb5c25d99 authored by Brandon Philips on 06 October 2013, 18:39:49 UTC, committed by Brandon Philips on 06 October 2013, 18:39:49 UTC
2 parent s 5cc585a + baaaf24
Raw File
Tip revision: 0facc24016fbfd980eda11d36cac1a2fb5c25d99 authored by Brandon Philips on 06 October 2013, 18:39:49 UTC
Merge remote-tracking branch 'xiangli-cmu/newStore' into 0.2
Tip revision: 0facc24
etcd_server.go
package main

import (
	"net/http"
)

type etcdServer struct {
	http.Server
	name    string
	url     string
	tlsConf *TLSConfig
	tlsInfo *TLSInfo
}

var e *etcdServer

func newEtcdServer(name string, urlStr string, listenHost string, tlsConf *TLSConfig, tlsInfo *TLSInfo) *etcdServer {
	return &etcdServer{
		Server: http.Server{
			Handler:   NewEtcdMuxer(),
			TLSConfig: &tlsConf.Server,
			Addr:      listenHost,
		},
		name:    name,
		url:     urlStr,
		tlsConf: tlsConf,
		tlsInfo: tlsInfo,
	}
}

// Start to listen and response etcd client command
func (e *etcdServer) ListenAndServe() {

	infof("etcd server [name %s, listen on %s, advertised url %s]", e.name, e.Server.Addr, e.url)

	if e.tlsConf.Scheme == "http" {
		fatal(e.Server.ListenAndServe())
	} else {
		fatal(e.Server.ListenAndServeTLS(e.tlsInfo.CertFile, e.tlsInfo.KeyFile))
	}
}
back to top