Files
full/module/ec/market/internal/server/new.go
2026-09-22 21:15:34 +08:00

57 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Code generated by protoc-gen-slc. DO NOT EDIT.
package server
import (
pb "bsm/full/module/ec/market/pb"
"context"
"git.apinb.com/bsm-sdk/core/printer"
gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/reflection"
"google.golang.org/grpc/status"
)
// recoverUnaryInterceptor 捕获处理过程中的 panic转为 Internal 错误返回,避免进程崩溃。
func recoverUnaryInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {
defer func() {
if r := recover(); r != nil {
printer.Error("grpc panic recovered: %v", r)
err = status.Error(codes.Internal, "internal server error")
}
}()
return handler(ctx, req)
}
type Server struct {
Grpc *grpc.Server
Ctx context.Context
Mux *gwRuntime.ServeMux
grpcConns map[string]*grpc.ClientConn // 连接池
}
func New(grpcServ *grpc.Server) *Server {
standalone := grpcServ == nil
if standalone {
grpcServ = grpc.NewServer(grpc.UnaryInterceptor(recoverUnaryInterceptor))
}
srv := &Server{
Ctx: context.Background(),
Grpc: grpcServ,
grpcConns: make(map[string]*grpc.ClientConn),
}
// register service to grpc.Server
pb.RegisterAgencyServer(srv.Grpc, NewAgencyServer())
pb.RegisterDataServer(srv.Grpc, NewDataServer())
pb.RegisterSupplyServer(srv.Grpc, NewSupplyServer())
if standalone {
reflection.Register(srv.Grpc)
}
return srv
}