From 004528d0a45687bed68bfc78de0c1b4bab6c4b80 Mon Sep 17 00:00:00 2001 From: Ivan Daniluk Date: Wed, 29 Apr 2015 00:07:46 +0300 Subject: [PATCH] Expvar get func refactoring --- service.go | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/service.go b/service.go index fc08ad2..d1c97b9 100644 --- a/service.go +++ b/service.go @@ -1,11 +1,13 @@ package main import ( + "errors" "fmt" - "github.com/pyk/byten" "net/http" "runtime" "strings" + + "github.com/pyk/byten" ) type Services []*Service @@ -33,20 +35,30 @@ func NewService(port string) *Service { } } +func GetExpvar(addr string) (*Expvar, error) { + var e Expvar + resp, err := http.Get(addr) + if err != nil { + return &e, err + } + defer resp.Body.Close() + if resp.StatusCode == http.StatusNotFound { + return &e, errors.New("Vars not found. Did you import expvars?") + } else { + expvar, err := ParseExpvar(resp.Body) + e = *expvar + if err != nil { + return &e, err + } + } + return &e, nil +} + // Update updates Service info from Expvar variable. func (s *Service) Update() { - expvar := &Expvar{} - resp, err := http.Get(s.Addr()) - defer resp.Body.Close() + expvar, err := GetExpvar(s.Addr()) if err != nil { expvar.Err = err - } else if resp.StatusCode == http.StatusNotFound { - expvar.Err = fmt.Errorf("Vars not found. Did you import expvars?") - } else { - expvar, err = ParseExpvar(resp.Body) - if err != nil { - expvar = &Expvar{Err: err} - } } s.Err = expvar.Err @@ -64,7 +76,9 @@ func (s *Service) Update() { s.Values["memory"] = NewStack(1200) mem = s.Values["memory"] } - mem.Push(int(s.MemStats.Alloc) / 1024) + if s.MemStats != nil { + mem.Push(int(s.MemStats.Alloc) / 1024) + } } // Addr returns fully qualified host:port pair for service.