37 lines
		
	
	
		
			622 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			622 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package pb
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"context"
 | 
						|
 | 
						|
	"github.com/unistack-org/micro/v3/codec"
 | 
						|
	"github.com/unistack-org/micro/v3/meter"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// guard to fail early
 | 
						|
	_ MeterServer = &handler{}
 | 
						|
)
 | 
						|
 | 
						|
type Empty struct{}
 | 
						|
 | 
						|
type handler struct {
 | 
						|
	meter meter.Meter
 | 
						|
	opts  []meter.Option
 | 
						|
}
 | 
						|
 | 
						|
func NewHandler(meter meter.Meter, opts ...meter.Option) *handler {
 | 
						|
	return &handler{meter: meter, opts: opts}
 | 
						|
}
 | 
						|
 | 
						|
func (h *handler) Metrics(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error {
 | 
						|
	buf := bytes.NewBuffer(nil)
 | 
						|
	if err := h.meter.Write(buf, h.opts...); err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	rsp.Data = buf.Bytes()
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 |