From 4a64ee72f797d0de623fd41918294c0ef19eb15b Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Tue, 23 Mar 2021 17:26:29 +0300 Subject: [PATCH] meter/handler: provide default metrics handler Signed-off-by: Vasiliy Tolstov --- meter/handler/handler.go | 36 ++++++++++++++++++++++++++++++++++++ meter/handler/handler.pb.go | 3 --- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 meter/handler/handler.go delete mode 100644 meter/handler/handler.pb.go diff --git a/meter/handler/handler.go b/meter/handler/handler.go new file mode 100644 index 00000000..4bff85fa --- /dev/null +++ b/meter/handler/handler.go @@ -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 +} diff --git a/meter/handler/handler.pb.go b/meter/handler/handler.pb.go deleted file mode 100644 index 98fa5fcd..00000000 --- a/meter/handler/handler.pb.go +++ /dev/null @@ -1,3 +0,0 @@ -package pb - -type Empty struct{}