mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 01:53:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright The OpenTelemetry Authors
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
//
 | 
						|
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
package trace // import "go.opentelemetry.io/otel/sdk/trace"
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"sync"
 | 
						|
)
 | 
						|
 | 
						|
// SpanProcessor is a processing pipeline for spans in the trace signal.
 | 
						|
// SpanProcessors registered with a TracerProvider and are called at the start
 | 
						|
// and end of a Span's lifecycle, and are called in the order they are
 | 
						|
// registered.
 | 
						|
type SpanProcessor interface {
 | 
						|
	// DO NOT CHANGE: any modification will not be backwards compatible and
 | 
						|
	// must never be done outside of a new major release.
 | 
						|
 | 
						|
	// OnStart is called when a span is started. It is called synchronously
 | 
						|
	// and should not block.
 | 
						|
	OnStart(parent context.Context, s ReadWriteSpan)
 | 
						|
	// DO NOT CHANGE: any modification will not be backwards compatible and
 | 
						|
	// must never be done outside of a new major release.
 | 
						|
 | 
						|
	// OnEnd is called when span is finished. It is called synchronously and
 | 
						|
	// hence not block.
 | 
						|
	OnEnd(s ReadOnlySpan)
 | 
						|
	// DO NOT CHANGE: any modification will not be backwards compatible and
 | 
						|
	// must never be done outside of a new major release.
 | 
						|
 | 
						|
	// Shutdown is called when the SDK shuts down. Any cleanup or release of
 | 
						|
	// resources held by the processor should be done in this call.
 | 
						|
	//
 | 
						|
	// Calls to OnStart, OnEnd, or ForceFlush after this has been called
 | 
						|
	// should be ignored.
 | 
						|
	//
 | 
						|
	// All timeouts and cancellations contained in ctx must be honored, this
 | 
						|
	// should not block indefinitely.
 | 
						|
	Shutdown(ctx context.Context) error
 | 
						|
	// DO NOT CHANGE: any modification will not be backwards compatible and
 | 
						|
	// must never be done outside of a new major release.
 | 
						|
 | 
						|
	// ForceFlush exports all ended spans to the configured Exporter that have not yet
 | 
						|
	// been exported.  It should only be called when absolutely necessary, such as when
 | 
						|
	// using a FaaS provider that may suspend the process after an invocation, but before
 | 
						|
	// the Processor can export the completed spans.
 | 
						|
	ForceFlush(ctx context.Context) error
 | 
						|
	// DO NOT CHANGE: any modification will not be backwards compatible and
 | 
						|
	// must never be done outside of a new major release.
 | 
						|
}
 | 
						|
 | 
						|
type spanProcessorState struct {
 | 
						|
	sp    SpanProcessor
 | 
						|
	state *sync.Once
 | 
						|
}
 | 
						|
 | 
						|
func newSpanProcessorState(sp SpanProcessor) *spanProcessorState {
 | 
						|
	return &spanProcessorState{sp: sp, state: &sync.Once{}}
 | 
						|
}
 | 
						|
 | 
						|
type spanProcessorStates []*spanProcessorState
 |