35 lines
924 B
Go
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)
|
|
}
|