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)
|
|
|
|
|
}
|