refactor: hub grpc system

This commit is contained in:
lorsan
2026-04-06 11:39:19 +03:00
committed by lorsan
parent 306dcff31f
commit 0bd52aebea
11 changed files with 167 additions and 50 deletions
+25 -22
View File
@@ -5,17 +5,16 @@ import (
standartlog "log"
"net"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
grpcserv "github.com/lorsanstand/HomeOps-Hub/internal/hub/rpc"
"github.com/lorsanstand/HomeOps-Hub/internal/shared/config"
"github.com/lorsanstand/HomeOps-Hub/internal/shared/log"
"github.com/rs/zerolog"
"google.golang.org/grpc"
)
type App struct {
cfg *config.Config
log zerolog.Logger
cfg *config.Config
log zerolog.Logger
server *grpcserv.HubHandler
}
func NewApp() *App {
@@ -26,27 +25,31 @@ func NewApp() *App {
logger := log.NewLogger(cfg)
return &App{cfg: cfg, log: logger}
server := grpcserv.NewHubHandler(logger)
return &App{cfg: cfg, log: logger, server: server}
}
func (a *App) Run() {
address := fmt.Sprintf("http://0.0.0.0:%v", a.cfg.Port)
lis, err := net.Listen("tcp", fmt.Sprintf(":%v", a.cfg.Port))
err := a.hubServe()
if err != nil {
a.log.Error().Err(err).Msg("failed started listen")
return
a.log.Error().Err(err).Msg("failed start server")
}
grpcServer := grpc.NewServer()
pb.RegisterHubServer(grpcServer, grpcserv.NewServer())
a.log.Info().Str("address", address).Msg("server started")
err = grpcServer.Serve(lis)
if err != nil {
a.log.Error().Err(err).Msg("failed started rpc server")
return
}
}
func (a *App) hubServe() error {
address := fmt.Sprintf("0.0.0.0:%v", a.cfg.Port)
a.log.Info().Str("address", "http://"+address).Msg("start GRPC server")
lis, err := net.Listen("tcp", address)
if err != nil {
return err
}
err = a.server.GrpcServer.Serve(lis)
if err != nil {
return err
}
return nil
}
+16 -5
View File
@@ -4,18 +4,29 @@ import (
"context"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
"github.com/rs/zerolog"
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/emptypb"
)
type Server struct {
type HubHandler struct {
pb.UnimplementedHubServer
log zerolog.Logger
GrpcServer *grpc.Server
}
func NewServer() *Server {
return &Server{}
func NewHubHandler(logger zerolog.Logger) *HubHandler {
hub := &HubHandler{log: logger}
grpcServer := grpc.NewServer()
pb.RegisterHubServer(grpcServer, hub)
hub.GrpcServer = grpcServer
return hub
}
func (s *Server) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongResponse, error) {
func (h *HubHandler) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongResponse, error) {
h.log.Info().Msg("pong request")
return &pb.PongResponse{Pong: "Pong"}, nil
}