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 }