merch-api/internal/task/handler.go

60 lines
1.2 KiB
Go
Raw Normal View History

2026-03-08 14:07:10 +03:00
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 {
2026-04-02 17:58:49 +03:00
Host string
Port string
2026-03-08 14:07:10 +03:00
MerchProvider common.MerchProvider
}
func New(deps Deps) *Handler {
srv := grpc.NewServer()
handler := &Handler{
2026-04-02 17:58:49 +03:00
addr: net.JoinHostPort(deps.Host, deps.Port),
2026-03-08 14:07:10 +03:00
service: newService(deps.MerchProvider),
}
taskTransportV1.RegisterTaskProcessorServer(srv, handler)
2026-03-10 22:34:46 +03:00
handler.srv = srv
2026-03-08 14:07:10 +03:00
return handler
}
func (h *Handler) Serve() error {
2026-04-02 17:58:49 +03:00
log.WithField("addr", h.addr).Debugf("%v Serving tasks", pkgLogHeader)
2026-03-08 14:07:10 +03:00
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)
}