Files
HomeOps-Hub/internal/hub/rpc/server.go
T
2026-04-15 17:55:34 +03:00

45 lines
1.1 KiB
Go

package rpc
import (
"context"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
"github.com/lorsanstand/HomeOps-Hub/internal/domain"
"github.com/rs/zerolog"
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/emptypb"
)
type HubService interface {
RegisterAgent(data domain.RegisterAgentRequest) domain.RegisterAgentResponse
}
type HubHandler struct {
pb.UnimplementedHubServer
log zerolog.Logger
GrpcServer *grpc.Server
hub HubService
}
func NewHubHandler(HubServ HubService, logger zerolog.Logger) *HubHandler {
hub := &HubHandler{log: logger, hub: HubServ}
grpcServer := grpc.NewServer()
pb.RegisterHubServer(grpcServer, hub)
hub.GrpcServer = grpcServer
return hub
}
func (h *HubHandler) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongResponse, error) {
h.log.Info().Msg("pong request")
return &pb.PongResponse{Pong: "Pong"}, nil
}
func (h *HubHandler) RegisterAgent(ctx context.Context, request *pb.RegisterAgentRequest) (*pb.RegisterAgentResponse, error) {
data := domain.ToDomainAgentRequest(request)
resp := h.hub.RegisterAgent(data)
return domain.ToGRPCAgentResponse(resp), nil
}