Files
Cyrene_v2/internal/runtime/loop/trace.go
T

35 lines
924 B
Go

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)
}