package loop import ( "context" "git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/trace" ) // span starts a named span of the given kind when a Tracer is configured, else // returns a nil no-op span. The returned context carries the span as the current // one so nested spans chain as children. func (l *Loop) span(ctx context.Context, name string, kind trace.SpanKind) (context.Context, *trace.Span) { if l.tracer == nil { return ctx, nil } return l.tracer.StartSpan(ctx, name, kind) } // finishSpan closes a span with the given status, ignoring a nil span. func (l *Loop) finishSpan(sp *trace.Span, status trace.SpanStatus) { if sp == nil { return } sp.Finish(status) } // spanProp attaches a structured property to a span, ignoring a nil span and any // mutation-after-close error. func (l *Loop) spanProp(sp *trace.Span, key string, value any) { if sp == nil { return } _ = sp.SetProp(key, value) }