partially rewrite for own needs
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
142
templates/{{.File.Package}}_micro.pb.go.tmpl
Normal file
142
templates/{{.File.Package}}_micro.pb.go.tmpl
Normal file
@@ -0,0 +1,142 @@
|
||||
// Code generated by protoc-gen-micro
|
||||
// source: {{.File.Name}}
|
||||
package {{goPkgLastElement .File | splitArray ";" | last}}
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
micro_api "github.com/unistack-org/micro/v3/api"
|
||||
micro_client "github.com/unistack-org/micro/v3/client"
|
||||
micro_server "github.com/unistack-org/micro/v3/server"
|
||||
)
|
||||
|
||||
{{- $ServiceName := .Service.Name | trimSuffix "Service" }}
|
||||
|
||||
// New{{$ServiceName}}Endpoints provides api endpoints metdata for {{$ServiceName}} service
|
||||
func New{{$ServiceName}}Endpoints() []*micro_api.Endpoint {
|
||||
var endpoints []*micro_api.Endpoint
|
||||
|
||||
{{- range .Service.Method}}
|
||||
{{- if ne (httpVerb .) "" }}
|
||||
endpoint := µ_api.Endpoint{
|
||||
Name: "{{$ServiceName}}.{{.Name}}",
|
||||
Path: []string{"{{httpPath .}}"},
|
||||
Method: []string{"{{httpVerb .}}"},
|
||||
{{- if ne (httpBody .) "" }}
|
||||
Body: "{{httpBody .}}",
|
||||
{{- end}}
|
||||
{{- if or (.ClientStreaming) (.ServerStreaming)}}
|
||||
Stream: true,
|
||||
{{- end}}
|
||||
Handler: "rpc",
|
||||
}
|
||||
{{- range httpPathsAdditionalBindings . }}
|
||||
endpoint.Path = append(endpoint.Path, "{{.}}")
|
||||
{{- end}}
|
||||
endpoints = append(endpoints, endpoint)
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
return endpoints
|
||||
}
|
||||
|
||||
// {{$ServiceName}}Service interface
|
||||
type {{$ServiceName}}Service interface {
|
||||
{{- range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last }}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last }}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
{{- if and (.ServerStreaming) (not .ClientStreaming)}}
|
||||
{{.Name}}(context.Context, *{{$reqMethod}}, ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error)
|
||||
{{- else}}
|
||||
{{.Name}}(context.Context, ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error)
|
||||
{{- end}}
|
||||
{{- else}}
|
||||
{{.Name}}(context.Context, *{{$reqMethod}}, ...micro_client.CallOption) (*{{$rspMethod}}, error)
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
{{range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName}}_{{.Name}}Service interface {
|
||||
Context() context.Context
|
||||
SendMsg(interface{}) error
|
||||
RecvMsg(interface{}) error
|
||||
{{- if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
RecvAndClose() (*{{$rspMethod}}, error)
|
||||
{{- end}}
|
||||
Close() error
|
||||
{{- if .ClientStreaming}}
|
||||
Send(*{{$reqMethod}}) error
|
||||
{{- end}}
|
||||
{{- if .ServerStreaming}}
|
||||
Recv() (*{{$rspMethod}}, error)
|
||||
{{- end}}
|
||||
}
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
// Micro server stuff
|
||||
|
||||
// {{$ServiceName}}Handler server handler
|
||||
type {{$ServiceName}}Handler interface {
|
||||
{{- range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
{{- if not .ClientStreaming}}
|
||||
{{.Name}}(context.Context, *{{$reqMethod}}, {{$ServiceName}}_{{.Name}}Stream) error
|
||||
{{- else}}
|
||||
{{.Name}}(context.Context, {{$ServiceName}}_{{.Name}}Stream) error
|
||||
{{- end}}
|
||||
{{- else}}
|
||||
{{.Name}}(context.Context, *{{$reqMethod}}, *{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
// Register{{$ServiceName}}Handler registers server handler
|
||||
func Register{{$ServiceName}}Handler(s micro_server.Server, sh {{$ServiceName}}Handler, opts ...micro_server.HandlerOption) error {
|
||||
type {{$ServiceName | lowerFirst}} interface {
|
||||
{{- range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
{{.Name}}(context.Context, micro_server.Stream) error
|
||||
{{- else}}
|
||||
{{.Name}}(context.Context, *{{$reqMethod}}, *{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
}
|
||||
type {{$ServiceName}} struct {
|
||||
{{$ServiceName | lowerFirst}}
|
||||
}
|
||||
h := &{{$ServiceName | lowerFirst}}Handler{sh}
|
||||
for _, endpoint := range New{{$ServiceName}}Endpoints() {
|
||||
opts = append(opts, micro_api.WithEndpoint(endpoint))
|
||||
}
|
||||
return s.Handle(s.NewHandler(&{{$ServiceName}}{h}, opts...))
|
||||
}
|
||||
|
||||
{{- range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName}}_{{.Name}}Stream interface {
|
||||
Context() context.Context
|
||||
SendMsg(interface{}) error
|
||||
RecvMsg(interface{}) error
|
||||
{{- if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
SendAndClose(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
Close() error
|
||||
{{- if .ServerStreaming}}
|
||||
Send(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
{{- if .ClientStreaming}}
|
||||
Recv() (*{{$reqMethod}}, error)
|
||||
{{- end}}
|
||||
}
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
219
templates/{{.File.Package}}_micro_grpc.pb.go.tmpl
Normal file
219
templates/{{.File.Package}}_micro_grpc.pb.go.tmpl
Normal file
@@ -0,0 +1,219 @@
|
||||
// Code generated by protoc-gen-micro
|
||||
// source: {{.File.Name}}
|
||||
package {{goPkgLastElement .File | splitArray ";" | last}}
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
micro_client "github.com/unistack-org/micro/v3/client"
|
||||
micro_server "github.com/unistack-org/micro/v3/server"
|
||||
)
|
||||
|
||||
var (
|
||||
_ micro_server.Option
|
||||
_ micro_client.Option
|
||||
)
|
||||
|
||||
{{- $File := .File }}
|
||||
{{- $ServiceName := .Service.Name | trimSuffix "Service" }}
|
||||
|
||||
type {{$ServiceName | lowerFirst}}Service struct {
|
||||
c micro_client.Client
|
||||
name string
|
||||
}
|
||||
|
||||
// Micro client stuff
|
||||
|
||||
// New{{$ServiceName}}Service create new service client
|
||||
func New{{$ServiceName}}Service(name string, c micro_client.Client) {{$ServiceName}}Service {
|
||||
return &{{$ServiceName | lowerFirst}}Service{c: c, name: name}
|
||||
}
|
||||
|
||||
{{range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if and (not .ClientStreaming) (.ServerStreaming) -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, opts ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error) {
|
||||
{{- else if .ClientStreaming -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, opts ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error) {
|
||||
{{- else -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, opts ...micro_client.CallOption) (*{{$rspMethod}}, error) {
|
||||
{{- end -}}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
stream, err := c.c.Stream(ctx, c.c.NewRequest(c.name, "{{$ServiceName}}.{{.Name}}", &{{$reqMethod}}{}), opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
{{- if not .ClientStreaming }}
|
||||
if err := stream.Send(req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
{{- end}}
|
||||
return &{{$ServiceName | lowerFirst}}Service{{.Name}}{stream}, nil
|
||||
{{- else}}
|
||||
rsp := &{{$rspMethod}}{}
|
||||
err := c.c.Call(ctx, c.c.NewRequest(c.name, "{{$ServiceName}}.{{.Name}}", req), rsp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rsp, nil
|
||||
{{- end}}
|
||||
}
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName}}_{{.Name}}Service interface {
|
||||
Context() context.Context
|
||||
SendMsg(interface{}) error
|
||||
RecvMsg(interface{}) error
|
||||
{{- if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
RecvAndClose() (*{{$rspMethod}}, error)
|
||||
{{- end}}
|
||||
Close() error
|
||||
{{- if .ClientStreaming}}
|
||||
Send(*{{$reqMethod}}) error
|
||||
{{- end}}
|
||||
{{- if .ServerStreaming}}
|
||||
Recv() (*{{$rspMethod}}, error)
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
type {{$ServiceName | lowerFirst}}Service{{.Name}} struct {
|
||||
stream micro_client.Stream
|
||||
}
|
||||
{{if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) RecvAndClose() (*{{$rspMethod}}, error) {
|
||||
m := &{{$rspMethod}}{}
|
||||
err := x.RecvMsg(m)
|
||||
if err == nil {
|
||||
err = x.Close()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Close() error {
|
||||
return x.stream.Close()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Context() context.Context {
|
||||
return x.stream.Context()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) SendMsg(m interface{}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) RecvMsg(m interface{}) error {
|
||||
return x.stream.Recv(m)
|
||||
}
|
||||
|
||||
{{ if .ClientStreaming -}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Send(m *{{$reqMethod}}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
{{ if .ServerStreaming -}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Recv() (*{{$rspMethod}}, error) {
|
||||
m := &{{$rspMethod}}{}
|
||||
if err := x.stream.Recv(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- end}}
|
||||
{{- end -}}
|
||||
|
||||
// Micro server stuff
|
||||
|
||||
type {{$ServiceName | lowerFirst}}Handler struct {
|
||||
{{$ServiceName}}Handler
|
||||
}
|
||||
{{range .Service.Method }}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
func (h *{{$ServiceName | lowerFirst}}Handler) {{.Name}}(ctx context.Context, stream micro_server.Stream) error {
|
||||
{{- if not .ClientStreaming}}
|
||||
m := &{{$reqMethod}}{}
|
||||
if err := stream.Recv(m); err != nil {
|
||||
return err
|
||||
}
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, m, &{{$ServiceName | lowerFirst}}{{.Name}}Stream{stream})
|
||||
{{- else}}
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, &{{$ServiceName | lowerFirst}}{{.Name}}Stream{stream})
|
||||
{{- end}}
|
||||
}
|
||||
{{- else}}
|
||||
func (h *{{$ServiceName | lowerFirst}}Handler) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, rsp *{{$rspMethod}}) error {
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, req, rsp)
|
||||
}
|
||||
{{- end}}
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName}}_{{.Name}}Stream interface {
|
||||
Context() context.Context
|
||||
SendMsg(interface{}) error
|
||||
RecvMsg(interface{}) error
|
||||
{{- if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
SendAndClose(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
Close() error
|
||||
{{- if .ServerStreaming}}
|
||||
Send(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
{{- if .ClientStreaming}}
|
||||
Recv() (*{{$reqMethod}}, error)
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
type {{$ServiceName | lowerFirst}}{{.Name}}Stream struct {
|
||||
stream micro_server.Stream
|
||||
}
|
||||
{{if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) SendAndClose(m *{{$rspMethod}}) error {
|
||||
err := x.SendMsg(m)
|
||||
if err == nil {
|
||||
err = x.stream.Close()
|
||||
}
|
||||
return err
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Close() error {
|
||||
return x.stream.Close()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Context() context.Context {
|
||||
return x.stream.Context()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) SendMsg(m interface{}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) RecvMsg(m interface{}) error {
|
||||
return x.stream.Recv(m)
|
||||
}
|
||||
{{- if .ServerStreaming}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Send(m *{{$rspMethod}}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
{{- end}}
|
||||
{{if .ClientStreaming}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Recv() (*{{$reqMethod}}, error) {
|
||||
m := &{{$reqMethod}}{}
|
||||
if err := x.stream.Recv(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
218
templates/{{.File.Package}}_micro_http.pb.go.tmpl
Normal file
218
templates/{{.File.Package}}_micro_http.pb.go.tmpl
Normal file
@@ -0,0 +1,218 @@
|
||||
// Code generated by protoc-gen-micro
|
||||
// source: {{.File.Name}}
|
||||
package {{goPkgLastElement .File | splitArray ";" | last}}
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
micro_client "github.com/unistack-org/micro/v3/client"
|
||||
micro_server "github.com/unistack-org/micro/v3/server"
|
||||
micro_client_http "github.com/unistack-org/micro-client-http"
|
||||
)
|
||||
|
||||
var (
|
||||
_ micro_server.Option
|
||||
_ micro_client.Option
|
||||
)
|
||||
|
||||
{{- $File := .File }}
|
||||
{{- $ServiceName := .Service.Name | trimSuffix "Service" }}
|
||||
|
||||
type {{$ServiceName | lowerFirst}}Service struct {
|
||||
c micro_client.Client
|
||||
name string
|
||||
}
|
||||
|
||||
// Micro client stuff
|
||||
|
||||
// New{{$ServiceName}}Service create new service client
|
||||
func New{{$ServiceName}}Service(name string, c micro_client.Client) {{$ServiceName}}Service {
|
||||
return &{{$ServiceName | lowerFirst}}Service{c: c, name: name}
|
||||
}
|
||||
|
||||
{{range .Service.Method}}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if and (not .ClientStreaming) (.ServerStreaming) -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, opts ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error) {
|
||||
{{- else if .ClientStreaming -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, opts ...micro_client.CallOption) ({{$ServiceName}}_{{.Name}}Service, error) {
|
||||
{{- else -}}
|
||||
func (c *{{$ServiceName | lowerFirst}}Service) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, opts ...micro_client.CallOption) (*{{$rspMethod}}, error) {
|
||||
{{- end }}
|
||||
{{- if (openapiOption .).Responses }}
|
||||
errmap := make(map[string]interface{}, {{ len (openapiOption .).Responses}})
|
||||
{{- range $k, $v := (openapiOption .).Responses }}
|
||||
errmap["{{$k}}"] = &{{- (getMessageType $File $v.Schema.JsonSchema.Ref).Name }}{}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
nopts := append(opts,
|
||||
micro_client_http.Method("{{httpVerb .}}"),
|
||||
micro_client_http.Path("{{httpPath .}}"),
|
||||
{{- if (openapiOption .).Responses }}
|
||||
micro_client_http.ErrorMap(errmap),
|
||||
{{- end }}
|
||||
)
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
stream, err := c.c.Stream(ctx, c.c.NewRequest(c.name, "{{$ServiceName}}.{{.Name}}", &{{$reqMethod}}{}), nopts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
{{- if not .ClientStreaming }}
|
||||
if err := stream.Send(req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
{{- end}}
|
||||
return &{{$ServiceName | lowerFirst}}Service{{.Name}}{stream}, nil
|
||||
{{- else}}
|
||||
rsp := &{{$rspMethod}}{}
|
||||
err := c.c.Call(ctx, c.c.NewRequest(c.name, "{{$ServiceName}}.{{.Name}}", req), rsp, nopts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rsp, nil
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName | lowerFirst}}Service{{.Name}} struct {
|
||||
stream micro_client.Stream
|
||||
}
|
||||
{{if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) RecvAndClose() (*{{$rspMethod}}, error) {
|
||||
m := &{{$rspMethod}}{}
|
||||
err := x.RecvMsg(m)
|
||||
if err == nil {
|
||||
err = x.Close()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Close() error {
|
||||
return x.stream.Close()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Context() context.Context {
|
||||
return x.stream.Context()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) SendMsg(m interface{}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) RecvMsg(m interface{}) error {
|
||||
return x.stream.Recv(m)
|
||||
}
|
||||
|
||||
{{ if .ClientStreaming -}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Send(m *{{$reqMethod}}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
{{ if .ServerStreaming -}}
|
||||
func (x *{{$ServiceName | lowerFirst}}Service{{.Name}}) Recv() (*{{$rspMethod}}, error) {
|
||||
m := &{{$rspMethod}}{}
|
||||
if err := x.stream.Recv(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- end}}
|
||||
{{- end -}}
|
||||
|
||||
// Micro server stuff
|
||||
|
||||
type {{$ServiceName | lowerFirst}}Handler struct {
|
||||
{{$ServiceName}}Handler
|
||||
}
|
||||
{{range .Service.Method }}
|
||||
{{- $reqMethod := .InputType | splitArray "." | last}}
|
||||
{{- $rspMethod := .OutputType | splitArray "." | last}}
|
||||
{{- if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
func (h *{{$ServiceName | lowerFirst}}Handler) {{.Name}}(ctx context.Context, stream micro_server.Stream) error {
|
||||
{{- if not .ClientStreaming}}
|
||||
m := &{{$reqMethod}}{}
|
||||
if err := stream.Recv(m); err != nil {
|
||||
return err
|
||||
}
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, m, &{{$ServiceName | lowerFirst}}{{.Name}}Stream{stream})
|
||||
{{- else}}
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, &{{$ServiceName | lowerFirst}}{{.Name}}Stream{stream})
|
||||
{{- end}}
|
||||
}
|
||||
{{- else}}
|
||||
func (h *{{$ServiceName | lowerFirst}}Handler) {{.Name}}(ctx context.Context, req *{{$reqMethod}}, rsp *{{$rspMethod}}) error {
|
||||
return h.{{$ServiceName}}Handler.{{.Name}}(ctx, req, rsp)
|
||||
}
|
||||
{{- end}}
|
||||
{{if or (.ServerStreaming) (.ClientStreaming)}}
|
||||
type {{$ServiceName}}_{{.Name}}Stream interface {
|
||||
Context() context.Context
|
||||
SendMsg(interface{}) error
|
||||
RecvMsg(interface{}) error
|
||||
{{- if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
SendAndClose(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
Close() error
|
||||
{{- if .ServerStreaming}}
|
||||
Send(*{{$rspMethod}}) error
|
||||
{{- end}}
|
||||
{{- if .ClientStreaming}}
|
||||
Recv() (*{{$reqMethod}}, error)
|
||||
{{- end}}
|
||||
}
|
||||
|
||||
type {{$ServiceName | lowerFirst}}{{.Name}}Stream struct {
|
||||
stream micro_server.Stream
|
||||
}
|
||||
{{if and (.ClientStreaming) (not .ServerStreaming)}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) SendAndClose(m *{{$rspMethod}}) error {
|
||||
err := x.SendMsg(m)
|
||||
if err == nil {
|
||||
err = x.stream.Close()
|
||||
}
|
||||
return err
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Close() error {
|
||||
return x.stream.Close()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Context() context.Context {
|
||||
return x.stream.Context()
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) SendMsg(m interface{}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) RecvMsg(m interface{}) error {
|
||||
return x.stream.Recv(m)
|
||||
}
|
||||
{{- if .ServerStreaming}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Send(m *{{$rspMethod}}) error {
|
||||
return x.stream.Send(m)
|
||||
}
|
||||
{{- end}}
|
||||
{{if .ClientStreaming}}
|
||||
func (x *{{$ServiceName | lowerFirst}}{{.Name}}Stream) Recv() (*{{$reqMethod}}, error) {
|
||||
m := &{{$reqMethod}}{}
|
||||
if err := x.stream.Recv(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
{{- end}}
|
||||
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
Reference in New Issue
Block a user