diff options
author | Andrew Newdigate <andrew@gitlab.com> | 2019-08-30 21:52:51 +0300 |
---|---|---|
committer | Andrew Newdigate <andrew@gitlab.com> | 2019-08-30 21:52:51 +0300 |
commit | 9bd20c295647425bbb56431393c3502a81fa71f5 (patch) | |
tree | 050e5a3785b70cd85052080ad3c26602b868f5ce /app.go | |
parent | 4e80090046d58d8ddd80a38939262a957d6dea1f (diff) |
Refactoring to reduce cyclometric complexity
Diffstat (limited to 'app.go')
-rw-r--r-- | app.go | 87 |
1 files changed, 53 insertions, 34 deletions
@@ -345,52 +345,22 @@ func (a *theApp) Run() { // Listen for HTTP for _, fd := range a.ListenHTTP { - wg.Add(1) - go func(fd uintptr) { - defer wg.Done() - err := listenAndServe(fd, httpHandler, a.HTTP2, nil, limiter) - if err != nil { - capturingFatal(err, errortracking.WithField("listener", "http")) - } - }(fd) + a.listenHTTPFD(&wg, fd, httpHandler, limiter) } // Listen for HTTPS for _, fd := range a.ListenHTTPS { - wg.Add(1) - go func(fd uintptr) { - defer wg.Done() - err := listenAndServeTLS(fd, a.RootCertificate, a.RootKey, httpHandler, a.ServeTLS, a.InsecureCiphers, a.TLSMinVersion, a.TLSMaxVersion, a.HTTP2, limiter) - if err != nil { - capturingFatal(err, errortracking.WithField("listener", "https")) - } - }(fd) + a.listenHTTPSFD(&wg, fd, httpHandler, limiter) } // Listen for HTTP proxy requests for _, fd := range a.ListenProxy { - wg.Add(1) - go func(fd uintptr) { - defer wg.Done() - err := listenAndServe(fd, proxyHandler, a.HTTP2, nil, limiter) - if err != nil { - capturingFatal(err, errortracking.WithField("listener", "http proxy")) - } - }(fd) + a.listenProxyFD(&wg, fd, proxyHandler, limiter) } // Serve metrics for Prometheus if a.ListenMetrics != 0 { - wg.Add(1) - go func(fd uintptr) { - defer wg.Done() - - handler := promhttp.Handler() - err := listenAndServe(fd, handler, false, nil, nil) - if err != nil { - capturingFatal(err, errortracking.WithField("listener", "metrics")) - } - }(a.ListenMetrics) + a.listenMetricsFD(&wg, a.ListenMetrics) } a.listenAdminUnix(&wg) @@ -401,6 +371,55 @@ func (a *theApp) Run() { wg.Wait() } +func (a *theApp) listenHTTPFD(wg *sync.WaitGroup, fd uintptr, httpHandler http.Handler, limiter *netutil.Limiter) { + wg.Add(1) + go func() { + defer wg.Done() + err := listenAndServe(fd, httpHandler, a.HTTP2, nil, limiter) + if err != nil { + capturingFatal(err, errortracking.WithField("listener", "http")) + } + }() +} + +func (a *theApp) listenHTTPSFD(wg *sync.WaitGroup, fd uintptr, httpHandler http.Handler, limiter *netutil.Limiter) { + wg.Add(1) + go func() { + defer wg.Done() + err := listenAndServeTLS(fd, a.RootCertificate, a.RootKey, httpHandler, a.ServeTLS, a.InsecureCiphers, a.TLSMinVersion, a.TLSMaxVersion, a.HTTP2, limiter) + if err != nil { + capturingFatal(err, errortracking.WithField("listener", "https")) + } + }() +} + +func (a *theApp) listenProxyFD(wg *sync.WaitGroup, fd uintptr, proxyHandler http.Handler, limiter *netutil.Limiter) { + wg.Add(1) + go func() { + wg.Add(1) + go func(fd uintptr) { + defer wg.Done() + err := listenAndServe(fd, proxyHandler, a.HTTP2, nil, limiter) + if err != nil { + capturingFatal(err, errortracking.WithField("listener", "http proxy")) + } + }(fd) + }() +} + +func (a *theApp) listenMetricsFD(wg *sync.WaitGroup, fd uintptr) { + wg.Add(1) + go func() { + defer wg.Done() + + handler := promhttp.Handler() + err := listenAndServe(fd, handler, false, nil, nil) + if err != nil { + capturingFatal(err, errortracking.WithField("listener", "metrics")) + } + }() +} + func (a *theApp) listenAdminUnix(wg *sync.WaitGroup) { fd := a.ListenAdminUnix if fd == 0 { |