gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/debug/stats/default.go (about) 1 package stats 2 3 import ( 4 "gitee.com/liuxuezhan/go-micro-v1.18.0/debug/buffer" 5 ) 6 7 type stats struct { 8 buffer *buffer.Buffer 9 } 10 11 func (s *stats) Read() ([]*Stat, error) { 12 // TODO adjustable size and optional read values 13 buf := s.buffer.Get(1) 14 var stats []*Stat 15 16 for _, b := range buf { 17 stat, ok := b.Value.(*Stat) 18 if !ok { 19 continue 20 } 21 stats = append(stats, stat) 22 } 23 24 return stats, nil 25 } 26 27 func (s *stats) Write(stat *Stat) error { 28 s.buffer.Put(stat) 29 return nil 30 } 31 32 // NewStats returns a new in memory stats buffer 33 // TODO add options 34 func NewStats() Stats { 35 return &stats{ 36 buffer: buffer.New(1024), 37 } 38 }