提交 794b7b7b 作者: Kevin Wallace

corehttp: tear off makeHandler, for tests

License: MIT
Signed-off-by: 's avatarKevin Wallace <kevin@pentabarf.net>
上级 084cdc3e
......@@ -18,6 +18,21 @@ var log = eventlog.Logger("core/server")
// initially passed in if not.
type ServeOption func(*core.IpfsNode, *http.ServeMux) (*http.ServeMux, error)
// makeHandler turns a list of ServeOptions into a http.Handler that implements
// all of the given options, in order.
func makeHandler(n *core.IpfsNode, options ...ServeOption) (http.Handler, error) {
topMux := http.NewServeMux()
mux := topMux
for _, option := range options {
var err error
mux, err = option(n, mux)
if err != nil {
return nil, err
}
}
return topMux, nil
}
// ListenAndServe runs an HTTP server listening at |listeningMultiAddr| with
// the given serve options. The address must be provided in multiaddr format.
//
......@@ -29,18 +44,14 @@ func ListenAndServe(n *core.IpfsNode, listeningMultiAddr string, options ...Serv
if err != nil {
return err
}
topMux := http.NewServeMux()
mux := topMux
for _, option := range options {
mux, err = option(n, mux)
if err != nil {
return err
}
handler, err := makeHandler(n, options...)
if err != nil {
return err
}
return listenAndServe(n, addr, topMux)
return listenAndServe(n, addr, handler)
}
func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, mux *http.ServeMux) error {
func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, handler http.Handler) error {
_, host, err := manet.DialArgs(addr)
if err != nil {
return err
......@@ -53,7 +64,7 @@ func listenAndServe(node *core.IpfsNode, addr ma.Multiaddr, mux *http.ServeMux)
serverExited := make(chan struct{})
go func() {
serverError = server.ListenAndServe(host, mux)
serverError = server.ListenAndServe(host, handler)
close(serverExited)
}()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论