import from main repo
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
9f4dbbf296
commit
c908274c8b
1
go.mod
1
go.mod
@ -3,6 +3,7 @@ module go.unistack.org/micro-server-http/v3
|
|||||||
go 1.16
|
go 1.16
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
go.unistack.org/micro-proto/v3 v3.3.1
|
||||||
go.unistack.org/micro/v3 v3.10.12
|
go.unistack.org/micro/v3 v3.10.12
|
||||||
golang.org/x/net v0.7.0
|
golang.org/x/net v0.7.0
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
4
go.sum
4
go.sum
@ -75,8 +75,6 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
|
|||||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||||
go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo=
|
go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo=
|
||||||
go.unistack.org/micro-proto/v3 v3.3.1/go.mod h1:cwRyv8uInM2I7EbU7O8Fx2Ls3N90Uw9UCCcq4olOdfE=
|
go.unistack.org/micro-proto/v3 v3.3.1/go.mod h1:cwRyv8uInM2I7EbU7O8Fx2Ls3N90Uw9UCCcq4olOdfE=
|
||||||
go.unistack.org/micro/v3 v3.10.11 h1:IPUEVQ5oGZ6Ft2/2zQAOIkp+Ztt6GIHxwMoG4l+eJGQ=
|
|
||||||
go.unistack.org/micro/v3 v3.10.11/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI=
|
|
||||||
go.unistack.org/micro/v3 v3.10.12 h1:M/aRNkj3FFWFivsHnm1XT4qjc9xiGxSl15BStW1SgQ4=
|
go.unistack.org/micro/v3 v3.10.12 h1:M/aRNkj3FFWFivsHnm1XT4qjc9xiGxSl15BStW1SgQ4=
|
||||||
go.unistack.org/micro/v3 v3.10.12/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI=
|
go.unistack.org/micro/v3 v3.10.12/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
@ -98,8 +96,6 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
|
|||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ=
|
|
||||||
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
8
handler/health/generate.go
Normal file
8
handler/health/generate.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package health
|
||||||
|
|
||||||
|
//go:generate sh -c "protoc -I./ -I$(go list -f '{{ .Dir }}' -m go.unistack.org/micro-proto/v3) --go-micro_out='components=micro|http|server',standalone=false,debug=true,paths=source_relative:./ health.proto"
|
||||||
|
|
||||||
|
import (
|
||||||
|
// import required packages
|
||||||
|
_ "go.unistack.org/micro-proto/v3/openapiv3"
|
||||||
|
)
|
82
handler/health/health.go
Normal file
82
handler/health/health.go
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package health // import "go.unistack.org/micro-server-http/v3/handler/health"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
codecpb "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
"go.unistack.org/micro/v3/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ HealthServiceServer = &Handler{}
|
||||||
|
|
||||||
|
type Handler struct {
|
||||||
|
opts Options
|
||||||
|
}
|
||||||
|
|
||||||
|
type CheckFunc func(context.Context) error
|
||||||
|
|
||||||
|
type Option func(*Options)
|
||||||
|
|
||||||
|
type Options struct {
|
||||||
|
Version string
|
||||||
|
Name string
|
||||||
|
LiveChecks []CheckFunc
|
||||||
|
ReadyChecks []CheckFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
func LiveChecks(fns ...CheckFunc) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.LiveChecks = append(o.LiveChecks, fns...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadyChecks(fns ...CheckFunc) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.ReadyChecks = append(o.ReadyChecks, fns...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Name(name string) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Name = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Version(version string) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Version = version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewHandler(opts ...Option) *Handler {
|
||||||
|
options := Options{}
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&options)
|
||||||
|
}
|
||||||
|
return &Handler{opts: options}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Live(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
||||||
|
var err error
|
||||||
|
for _, fn := range h.opts.LiveChecks {
|
||||||
|
if err = fn(ctx); err != nil {
|
||||||
|
return errors.ServiceUnavailable(h.opts.Name, "%v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Ready(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
||||||
|
var err error
|
||||||
|
for _, fn := range h.opts.ReadyChecks {
|
||||||
|
if err = fn(ctx); err != nil {
|
||||||
|
return errors.ServiceUnavailable(h.opts.Name, "%v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Version(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
||||||
|
rsp.Data = []byte(h.opts.Version)
|
||||||
|
return nil
|
||||||
|
}
|
50
handler/health/health.proto
Normal file
50
handler/health/health.proto
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package micro.server.http.v3.handler.health;
|
||||||
|
option go_package = "go.unistack.org/micro-server-http/v3/handler/health;health";
|
||||||
|
|
||||||
|
import "api/annotations.proto";
|
||||||
|
import "openapiv3/annotations.proto";
|
||||||
|
import "codec/frame.proto";
|
||||||
|
|
||||||
|
service HealthService {
|
||||||
|
rpc Live(micro.codec.Frame) returns (micro.codec.Frame) {
|
||||||
|
option (micro.openapiv3.openapiv3_operation) = {
|
||||||
|
operation_id: "Live";
|
||||||
|
responses: {
|
||||||
|
default: {
|
||||||
|
reference: {
|
||||||
|
_ref: "micro.codec.Frame";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
option (micro.api.http) = { get: "/live"; };
|
||||||
|
};
|
||||||
|
rpc Ready(micro.codec.Frame) returns (micro.codec.Frame) {
|
||||||
|
option (micro.openapiv3.openapiv3_operation) = {
|
||||||
|
operation_id: "Ready";
|
||||||
|
responses: {
|
||||||
|
default: {
|
||||||
|
reference: {
|
||||||
|
_ref: "micro.codec.Frame";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
option (micro.api.http) = { get: "/ready"; };
|
||||||
|
};
|
||||||
|
rpc Version(micro.codec.Frame) returns (micro.codec.Frame) {
|
||||||
|
option (micro.openapiv3.openapiv3_operation) = {
|
||||||
|
operation_id: "Version";
|
||||||
|
responses: {
|
||||||
|
default: {
|
||||||
|
reference: {
|
||||||
|
_ref: "micro.codec.Frame";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
option (micro.api.http) = { get: "/version"; };
|
||||||
|
};
|
||||||
|
};
|
48
handler/health/health_micro.pb.go
Normal file
48
handler/health/health_micro.pb.go
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Code generated by protoc-gen-go-micro. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// - protoc-gen-go-micro v3.10.2
|
||||||
|
// - protoc v3.21.12
|
||||||
|
// source: health.proto
|
||||||
|
|
||||||
|
package health
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
codec "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
v3 "go.unistack.org/micro-server-http/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
HealthServiceName = "HealthService"
|
||||||
|
)
|
||||||
|
var (
|
||||||
|
HealthServiceServerEndpoints = []v3.EndpointMetadata{
|
||||||
|
{
|
||||||
|
Name: "HealthService.Live",
|
||||||
|
Path: "/live",
|
||||||
|
Method: "GET",
|
||||||
|
Body: "",
|
||||||
|
Stream: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "HealthService.Ready",
|
||||||
|
Path: "/ready",
|
||||||
|
Method: "GET",
|
||||||
|
Body: "",
|
||||||
|
Stream: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "HealthService.Version",
|
||||||
|
Path: "/version",
|
||||||
|
Method: "GET",
|
||||||
|
Body: "",
|
||||||
|
Stream: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type HealthServiceServer interface {
|
||||||
|
Live(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
Ready(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
Version(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
}
|
43
handler/health/health_micro_http.pb.go
Normal file
43
handler/health/health_micro_http.pb.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
// Code generated by protoc-gen-go-micro. DO NOT EDIT.
|
||||||
|
// protoc-gen-go-micro version: v3.10.2
|
||||||
|
// source: health.proto
|
||||||
|
|
||||||
|
package health
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
codec "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
v3 "go.unistack.org/micro-server-http/v3"
|
||||||
|
server "go.unistack.org/micro/v3/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
type healthServiceServer struct {
|
||||||
|
HealthServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *healthServiceServer) Live(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error {
|
||||||
|
return h.HealthServiceServer.Live(ctx, req, rsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *healthServiceServer) Ready(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error {
|
||||||
|
return h.HealthServiceServer.Ready(ctx, req, rsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *healthServiceServer) Version(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error {
|
||||||
|
return h.HealthServiceServer.Version(ctx, req, rsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterHealthServiceServer(s server.Server, sh HealthServiceServer, opts ...server.HandlerOption) error {
|
||||||
|
type healthService interface {
|
||||||
|
Live(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
Ready(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
Version(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
}
|
||||||
|
type HealthService struct {
|
||||||
|
healthService
|
||||||
|
}
|
||||||
|
h := &healthServiceServer{sh}
|
||||||
|
var nopts []server.HandlerOption
|
||||||
|
nopts = append(nopts, v3.HandlerEndpoints(HealthServiceServerEndpoints))
|
||||||
|
return s.Handle(s.NewHandler(&HealthService{h}, append(nopts, opts...)...))
|
||||||
|
}
|
8
handler/meter/generate.go
Normal file
8
handler/meter/generate.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package meter
|
||||||
|
|
||||||
|
//go:generate sh -c "protoc -I./ -I$(go list -f '{{ .Dir }}' -m go.unistack.org/micro-proto/v3) --go-micro_out='components=micro|http|server',standalone=false,debug=true,paths=source_relative:./ meter.proto"
|
||||||
|
|
||||||
|
import (
|
||||||
|
// import required packages
|
||||||
|
_ "go.unistack.org/micro-proto/v3/openapiv3"
|
||||||
|
)
|
67
handler/meter/meter.go
Normal file
67
handler/meter/meter.go
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
package meter // import "go.unistack.org/micro-server-http/v3/handler/meter"
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
|
||||||
|
codecpb "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
"go.unistack.org/micro/v3/errors"
|
||||||
|
"go.unistack.org/micro/v3/meter"
|
||||||
|
)
|
||||||
|
|
||||||
|
// guard to fail early
|
||||||
|
var _ MeterServiceServer = &Handler{}
|
||||||
|
|
||||||
|
type Handler struct {
|
||||||
|
opts Options
|
||||||
|
}
|
||||||
|
|
||||||
|
type Option func(*Options)
|
||||||
|
|
||||||
|
type Options struct {
|
||||||
|
Meter meter.Meter
|
||||||
|
Name string
|
||||||
|
MeterOptions []meter.Option
|
||||||
|
}
|
||||||
|
|
||||||
|
func Meter(m meter.Meter) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Meter = m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Name(name string) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Name = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func MeterOptions(opts ...meter.Option) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.MeterOptions = append(o.MeterOptions, opts...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOptions(opts ...Option) Options {
|
||||||
|
options := Options{Meter: meter.DefaultMeter}
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&options)
|
||||||
|
}
|
||||||
|
return options
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewHandler(opts ...Option) *Handler {
|
||||||
|
options := NewOptions(opts...)
|
||||||
|
return &Handler{opts: options}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
||||||
|
buf := bytes.NewBuffer(nil)
|
||||||
|
if err := h.opts.Meter.Write(buf, h.opts.MeterOptions...); err != nil {
|
||||||
|
return errors.InternalServerError(h.opts.Name, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
rsp.Data = buf.Bytes()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
24
handler/meter/meter.proto
Normal file
24
handler/meter/meter.proto
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package micro.server.http.v3.handler.meter;
|
||||||
|
option go_package = "go.unistack.org/micro-server-http/v3/handler/meter;meter";
|
||||||
|
|
||||||
|
import "api/annotations.proto";
|
||||||
|
import "openapiv3/annotations.proto";
|
||||||
|
import "codec/frame.proto";
|
||||||
|
|
||||||
|
service MeterService {
|
||||||
|
rpc Metrics(micro.codec.Frame) returns (micro.codec.Frame) {
|
||||||
|
option (micro.openapiv3.openapiv3_operation) = {
|
||||||
|
operation_id: "Metrics";
|
||||||
|
responses: {
|
||||||
|
default: {
|
||||||
|
reference: {
|
||||||
|
_ref: "micro.codec.Frame";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
option (micro.api.http) = { get: "/metrics"; };
|
||||||
|
};
|
||||||
|
};
|
32
handler/meter/meter_micro.pb.go
Normal file
32
handler/meter/meter_micro.pb.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// Code generated by protoc-gen-go-micro. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// - protoc-gen-go-micro v3.10.2
|
||||||
|
// - protoc v3.21.12
|
||||||
|
// source: meter.proto
|
||||||
|
|
||||||
|
package meter
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
codec "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
v3 "go.unistack.org/micro-server-http/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
MeterServiceName = "MeterService"
|
||||||
|
)
|
||||||
|
var (
|
||||||
|
MeterServiceServerEndpoints = []v3.EndpointMetadata{
|
||||||
|
{
|
||||||
|
Name: "MeterService.Metrics",
|
||||||
|
Path: "/metrics",
|
||||||
|
Method: "GET",
|
||||||
|
Body: "",
|
||||||
|
Stream: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type MeterServiceServer interface {
|
||||||
|
Metrics(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
}
|
33
handler/meter/meter_micro_http.pb.go
Normal file
33
handler/meter/meter_micro_http.pb.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Code generated by protoc-gen-go-micro. DO NOT EDIT.
|
||||||
|
// protoc-gen-go-micro version: v3.10.2
|
||||||
|
// source: meter.proto
|
||||||
|
|
||||||
|
package meter
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "context"
|
||||||
|
codec "go.unistack.org/micro-proto/v3/codec"
|
||||||
|
v3 "go.unistack.org/micro-server-http/v3"
|
||||||
|
server "go.unistack.org/micro/v3/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
type meterServiceServer struct {
|
||||||
|
MeterServiceServer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *meterServiceServer) Metrics(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error {
|
||||||
|
return h.MeterServiceServer.Metrics(ctx, req, rsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterMeterServiceServer(s server.Server, sh MeterServiceServer, opts ...server.HandlerOption) error {
|
||||||
|
type meterService interface {
|
||||||
|
Metrics(ctx context.Context, req *codec.Frame, rsp *codec.Frame) error
|
||||||
|
}
|
||||||
|
type MeterService struct {
|
||||||
|
meterService
|
||||||
|
}
|
||||||
|
h := &meterServiceServer{sh}
|
||||||
|
var nopts []server.HandlerOption
|
||||||
|
nopts = append(nopts, v3.HandlerEndpoints(MeterServiceServerEndpoints))
|
||||||
|
return s.Handle(s.NewHandler(&MeterService{h}, append(nopts, opts...)...))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user