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 { Addr string MerchProvider common.MerchProvider } func New(deps Deps) *Handler { srv := grpc.NewServer() handler := &Handler{ addr: deps.Addr, service: newService(deps.MerchProvider), } taskTransportV1.RegisterTaskProcessorServer(srv, handler) return handler } func (h *Handler) Serve() error { 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) }