From 881d7afeeacd5bdc58e024ec476aab3ca19dcd3f Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Tue, 23 Mar 2021 17:00:02 +0300 Subject: [PATCH] meter/handler: provide initial meter handler Signed-off-by: Vasiliy Tolstov --- meter/generate.go | 3 +++ meter/handler/handler.pb.go | 3 +++ meter/handler/handler.proto | 30 ++++++++++++++++++++++++ meter/handler/handler_micro.pb.go | 24 +++++++++++++++++++ meter/handler/handler_micro_http.pb.go | 32 ++++++++++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 meter/generate.go create mode 100644 meter/handler/handler.pb.go create mode 100644 meter/handler/handler.proto create mode 100644 meter/handler/handler_micro.pb.go create mode 100644 meter/handler/handler_micro_http.pb.go diff --git a/meter/generate.go b/meter/generate.go new file mode 100644 index 00000000..a238c23a --- /dev/null +++ b/meter/generate.go @@ -0,0 +1,3 @@ +package meter + +//go:generate protoc -I./handler -I../ -I/home/vtolstov/.cache/go-path/pkg/mod/github.com/unistack-org/micro-proto@v0.0.1 --micro_out=components=micro|http|server,standalone=false,debug=true,paths=source_relative:./handler handler/handler.proto diff --git a/meter/handler/handler.pb.go b/meter/handler/handler.pb.go new file mode 100644 index 00000000..98fa5fcd --- /dev/null +++ b/meter/handler/handler.pb.go @@ -0,0 +1,3 @@ +package pb + +type Empty struct{} diff --git a/meter/handler/handler.proto b/meter/handler/handler.proto new file mode 100644 index 00000000..54e8a44b --- /dev/null +++ b/meter/handler/handler.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package meter; +option go_package = "github.com/unistack-org/micro/v3/meter/handler;pb"; + +import "api/annotations.proto"; +import "openapiv2/annotations.proto"; +import "codec/frame.proto"; + +service Meter { + rpc Metrics(Empty) returns (micro.codec.Frame) { + option (micro.openapiv2.openapiv2_operation) = { + operation_id: "Metrics"; + responses: { + key: "default"; + value: { + description: "Error response"; + schema: { + json_schema: { + ref: "Empty"; + } + } + } + } + }; + option (micro.api.http) = { get: "/metrics"; }; + }; +}; + +message Empty{}; diff --git a/meter/handler/handler_micro.pb.go b/meter/handler/handler_micro.pb.go new file mode 100644 index 00000000..38edd8e6 --- /dev/null +++ b/meter/handler/handler_micro.pb.go @@ -0,0 +1,24 @@ +// Code generated by protoc-gen-micro +// source: handler.proto +package pb + +import ( + context "context" + api "github.com/unistack-org/micro/v3/api" + codec "github.com/unistack-org/micro/v3/codec" +) + +func NewMeterEndpoints() []*api.Endpoint { + return []*api.Endpoint{ + &api.Endpoint{ + Name: "Meter.Metrics", + Path: []string{"/metrics"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + } +} + +type MeterServer interface { + Metrics(ctx context.Context, req *Empty, rsp *codec.Frame) error +} diff --git a/meter/handler/handler_micro_http.pb.go b/meter/handler/handler_micro_http.pb.go new file mode 100644 index 00000000..6497b0da --- /dev/null +++ b/meter/handler/handler_micro_http.pb.go @@ -0,0 +1,32 @@ +// Code generated by protoc-gen-micro +// source: handler.proto +package pb + +import ( + context "context" + api "github.com/unistack-org/micro/v3/api" + codec "github.com/unistack-org/micro/v3/codec" + server "github.com/unistack-org/micro/v3/server" +) + +type meterServer struct { + MeterServer +} + +func (h *meterServer) Metrics(ctx context.Context, req *Empty, rsp *codec.Frame) error { + return h.MeterServer.Metrics(ctx, req, rsp) +} + +func RegisterMeterServer(s server.Server, sh MeterServer, opts ...server.HandlerOption) error { + type meter interface { + Metrics(ctx context.Context, req *Empty, rsp *codec.Frame) error + } + type Meter struct { + meter + } + h := &meterServer{sh} + for _, endpoint := range NewMeterEndpoints() { + opts = append(opts, api.WithEndpoint(endpoint)) + } + return s.Handle(s.NewHandler(&Meter{h}, opts...)) +}