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  }