47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package main
|
|
|
|
func generateHandlersGRPC() {
|
|
generateToFile(headerHandlersGRPC, templateFuncHandlersGRPC, "internal/api/grpc_handler_gen.go", nil, nil)
|
|
}
|
|
|
|
var headerHandlersGRPC = `// Code generated by internal/gen/api/main.go. DO NOT EDIT.
|
|
|
|
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
. "github.com/centrifugal/centrifugo/v6/internal/apiproto"
|
|
"github.com/centrifugal/centrifugo/v6/internal/metrics"
|
|
|
|
"go.opentelemetry.io/otel/codes"
|
|
"go.opentelemetry.io/otel/trace"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
`
|
|
|
|
var templateFuncHandlersGRPC = `
|
|
// {{ .RequestCapitalized }} ...
|
|
func (s *grpcAPIService) {{ .RequestCapitalized }}(ctx context.Context, req *{{ .RequestCapitalized }}Request) (*{{ .RequestCapitalized }}Response, error) {
|
|
resp := s.api.{{ .RequestCapitalized }}(ctx, req)
|
|
{{- if ne .RequestCapitalized "Batch" }}
|
|
if s.config.UseOpenTelemetry && resp.Error != nil {
|
|
span := trace.SpanFromContext(ctx)
|
|
span.SetStatus(codes.Error, resp.Error.Error())
|
|
}
|
|
if resp.Error != nil && s.useTransportErrorMode(ctx) {
|
|
metrics.IncAPIError(s.api.config.Protocol, "{{ .RequestSnake }}", resp.Error.Code)
|
|
statusCode := MapErrorToGRPCCode(resp.Error)
|
|
transportError, _ := status.New(statusCode, resp.Error.Message).WithDetails(resp.Error)
|
|
return nil, transportError.Err()
|
|
}
|
|
{{- end}}
|
|
{{- if ne .RequestCapitalized "Batch" }}
|
|
if resp.Error != nil {
|
|
metrics.IncAPIError(s.api.config.Protocol, "{{ .RequestSnake }}", resp.Error.Code)
|
|
}
|
|
{{- end}}
|
|
return resp, nil
|
|
}
|
|
`
|