meter/handler: provide default metrics handler

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2021-03-23 17:26:29 +03:00
parent 881d7afeea
commit 4a64ee72f7
2 changed files with 36 additions and 3 deletions

36
meter/handler/handler.go Normal file
View File

@ -0,0 +1,36 @@
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 *Empty, 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
}

View File

@ -1,3 +0,0 @@
package pb
type Empty struct{}