diff --git a/debug/stats/default.go b/debug/stats/default.go new file mode 100644 index 00000000..b2d78fce --- /dev/null +++ b/debug/stats/default.go @@ -0,0 +1,38 @@ +package stats + +import ( + "github.com/micro/go-micro/debug/buffer" +) + +type stats struct { + buffer *buffer.Buffer +} + +func (s *stats) Read() ([]*Stat, error) { + // TODO adjustable size and optional read values + buf := s.buffer.Get(1) + var stats []*Stat + + for _, b := range buf { + stat, ok := b.Value.(*Stat) + if !ok { + continue + } + stats = append(stats, stat) + } + + return stats, nil +} + +func (s *stats) Write(stat *Stat) error { + s.buffer.Put(stat) + return nil +} + +// NewStats returns a new in memory stats buffer +// TODO add options +func NewStats() Stats { + return &stats{ + buffer: buffer.New(1024), + } +}