Files
full/module/social/relation/internal/server/new.go

62 lines
1.7 KiB
Go
Raw Normal View History

// Code generated by protoc-gen-slc. DO NOT EDIT.
package server
import (
pb "bsm/full/module/social/relation/pb"
"context"
2026-09-22 21:15:34 +08:00
"git.apinb.com/bsm-sdk/core/printer"
gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
type Server struct {
Grpc *grpc.Server
Ctx context.Context
Mux *gwRuntime.ServeMux
grpcConns map[string]*grpc.ClientConn // 连接池
}
2026-09-22 21:15:34 +08:00
// New 创建服务实例
// grpcServ 为空表示独立进程启动,自行创建 gRPC Server 并初始化网关路由
func New(grpcServ *grpc.Server) *Server {
standalone := grpcServ == nil
if standalone {
grpcServ = grpc.NewServer()
}
srv := &Server{
Ctx: context.Background(),
2026-09-22 21:15:34 +08:00
Grpc: grpcServ,
grpcConns: make(map[string]*grpc.ClientConn),
}
// register service to grpc.Server
pb.RegisterFollowServer(srv.Grpc, NewFollowServer())
pb.RegisterFriendServer(srv.Grpc, NewFriendServer())
pb.RegisterMatchServer(srv.Grpc, NewMatchServer())
2026-09-22 21:15:34 +08:00
if standalone {
// 独立进程需自行初始化网关路由并注册 handler否则 /relation.* 全部 404
srv.Mux = gwRuntime.NewServeMux()
if err := RegisterGateway(srv.Ctx, srv.Mux); err != nil {
printer.Error(err.Error())
}
reflection.Register(srv.Grpc)
}
return srv
}
2026-09-22 21:15:34 +08:00
// RegisterGateway 注册各 service 的 gateway handler
func RegisterGateway(ctx context.Context, mux *gwRuntime.ServeMux) error {
if err := pb.RegisterFollowHandlerServer(ctx, mux, NewFollowServer()); err != nil {
return err
}
if err := pb.RegisterFriendHandlerServer(ctx, mux, NewFriendServer()); err != nil {
return err
}
return pb.RegisterMatchHandlerServer(ctx, mux, NewMatchServer())
}