github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/transport/event/runner.go (about)

     1  package event
     2  
     3  import (
     4  	"context"
     5  	"emperror.dev/emperror"
     6  	"github.com/vseinstrumentiru/lego/internal/lego"
     7  	"github.com/vseinstrumentiru/lego/internal/lego/transport/event/metrics"
     8  	"go.opencensus.io/stats/view"
     9  )
    10  
    11  func Run(p lego.Process, config Config) (_ *eventManager, exec func() error, interrupt func(error)) {
    12  	em, err := newEventManager(p, config)
    13  	emperror.Panic(err)
    14  
    15  	metrics.Register(em.router)
    16  	_ = view.Register(
    17  		metrics.HandlerExecutionTimeView,
    18  		metrics.PublisherPublishTimeView,
    19  		metrics.SubscriberReceivedMessageView,
    20  	)
    21  
    22  	return em,
    23  		func() error { return em.Run(context.Background()) },
    24  		func(e error) {
    25  			p.Handle(e)
    26  			_ = em.router.Close()
    27  		}
    28  }