58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
// Code generated by protoc-gen-slc. DO NOT EDIT.
|
||
package server
|
||
|
||
import (
|
||
pb "bsm/full/module/social/group/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/reflection"
|
||
)
|
||
|
||
type Server struct {
|
||
Grpc *grpc.Server
|
||
Ctx context.Context
|
||
Mux *gwRuntime.ServeMux
|
||
grpcConns map[string]*grpc.ClientConn // 连接池
|
||
}
|
||
|
||
// New 创建服务实例
|
||
// grpcServ 为空表示独立进程启动,自行创建 gRPC Server 并初始化网关路由
|
||
func New(grpcServ *grpc.Server) *Server {
|
||
standalone := grpcServ == nil
|
||
if standalone {
|
||
grpcServ = grpc.NewServer()
|
||
}
|
||
|
||
srv := &Server{
|
||
Ctx: context.Background(),
|
||
Grpc: grpcServ,
|
||
grpcConns: make(map[string]*grpc.ClientConn),
|
||
}
|
||
|
||
// register service to grpc.Server
|
||
pb.RegisterBasicServer(srv.Grpc, NewBasicServer())
|
||
pb.RegisterMemberServer(srv.Grpc, NewMemberServer())
|
||
|
||
if standalone {
|
||
// 独立进程需自行初始化网关路由并注册 handler,否则 /group.* 全部 404
|
||
srv.Mux = gwRuntime.NewServeMux()
|
||
if err := RegisterGateway(srv.Ctx, srv.Mux); err != nil {
|
||
printer.Error(err.Error())
|
||
}
|
||
reflection.Register(srv.Grpc)
|
||
}
|
||
|
||
return srv
|
||
}
|
||
|
||
// RegisterGateway 注册各 service 的 gateway handler
|
||
func RegisterGateway(ctx context.Context, mux *gwRuntime.ServeMux) error {
|
||
if err := pb.RegisterBasicHandlerServer(ctx, mux, NewBasicServer()); err != nil {
|
||
return err
|
||
}
|
||
return pb.RegisterMemberHandlerServer(ctx, mux, NewMemberServer())
|
||
}
|