package task import ( log "github.com/sirupsen/logrus" "google.golang.org/grpc" "merch-api/internal/common" taskTransportV1 "merch-api/pkg/taskTransport/v1" "net" ) const pkgLogHeader string = "Tasker |" type Handler struct { addr string srv *grpc.Server *service } type Deps struct { Host string Port string MerchProvider common.MerchProvider } func New(deps Deps) *Handler { srv := grpc.NewServer() handler := &Handler{ addr: net.JoinHostPort(deps.Host, deps.Port), service: newService(deps.MerchProvider), } taskTransportV1.RegisterTaskProcessorServer(srv, handler) handler.srv = srv return handler } func (h *Handler) Serve() error { log.WithField("addr", h.addr).Debugf("%v Serving tasks", pkgLogHeader) listener, err := net.Listen("tcp", h.addr) if err != nil { log.WithError(err).Errorf("%v Listner failure", pkgLogHeader) return err } if err = h.srv.Serve(listener); err != nil { log.WithError(err).Errorf("%v Serve failure", pkgLogHeader) return err } log.Infof("%v gRPC server started on: %v", pkgLogHeader, h.addr) return nil } func (h *Handler) Shutdown() { h.srv.GracefulStop() log.Infof("%v gRPC server shutdown", pkgLogHeader) }