57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
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)
|
|
handler.srv = srv
|
|
|
|
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)
|
|
}
|