From 80d691749bd06bbf912a4c38f2036f00bd258c4d Mon Sep 17 00:00:00 2001 From: Jordan Krage Date: Tue, 11 Feb 2025 18:27:56 -0600 Subject: [PATCH] pkg/services: add EngineRecv --- pkg/services/service.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/services/service.go b/pkg/services/service.go index 85726e9247..6aa29f0f55 100644 --- a/pkg/services/service.go +++ b/pkg/services/service.go @@ -99,6 +99,19 @@ func (e *Engine) GoTick(ticker *timeutil.Ticker, fn func(context.Context)) { }) } +func EngineRecv[C any, CH ~<-chan C](e *Engine, ch CH, fn func(C)) { + e.Go(func(ctx context.Context) { + for { + select { + case <-ctx.Done(): + return + case c := <-ch: + fn(c) + } + } + }) +} + // Tracer returns the otel tracer with service attributes included. func (e *Engine) Tracer() trace.Tracer { return e.tracer