mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 10:02:26 -05:00 
			
		
		
		
	
		
			
	
	
		
			145 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			145 lines
		
	
	
	
		
			4.1 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 ( | ||
|  | 	"time" | ||
|  | 
 | ||
|  | 	"go.opentelemetry.io/otel/attribute" | ||
|  | 	"go.opentelemetry.io/otel/sdk/instrumentation" | ||
|  | 	"go.opentelemetry.io/otel/sdk/resource" | ||
|  | 	"go.opentelemetry.io/otel/trace" | ||
|  | ) | ||
|  | 
 | ||
|  | // snapshot is an record of a spans state at a particular checkpointed time. | ||
|  | // It is used as a read-only representation of that state. | ||
|  | type snapshot struct { | ||
|  | 	name                  string | ||
|  | 	spanContext           trace.SpanContext | ||
|  | 	parent                trace.SpanContext | ||
|  | 	spanKind              trace.SpanKind | ||
|  | 	startTime             time.Time | ||
|  | 	endTime               time.Time | ||
|  | 	attributes            []attribute.KeyValue | ||
|  | 	events                []Event | ||
|  | 	links                 []Link | ||
|  | 	status                Status | ||
|  | 	childSpanCount        int | ||
|  | 	droppedAttributeCount int | ||
|  | 	droppedEventCount     int | ||
|  | 	droppedLinkCount      int | ||
|  | 	resource              *resource.Resource | ||
|  | 	instrumentationScope  instrumentation.Scope | ||
|  | } | ||
|  | 
 | ||
|  | var _ ReadOnlySpan = snapshot{} | ||
|  | 
 | ||
|  | func (s snapshot) private() {} | ||
|  | 
 | ||
|  | // Name returns the name of the span. | ||
|  | func (s snapshot) Name() string { | ||
|  | 	return s.name | ||
|  | } | ||
|  | 
 | ||
|  | // SpanContext returns the unique SpanContext that identifies the span. | ||
|  | func (s snapshot) SpanContext() trace.SpanContext { | ||
|  | 	return s.spanContext | ||
|  | } | ||
|  | 
 | ||
|  | // Parent returns the unique SpanContext that identifies the parent of the | ||
|  | // span if one exists. If the span has no parent the returned SpanContext | ||
|  | // will be invalid. | ||
|  | func (s snapshot) Parent() trace.SpanContext { | ||
|  | 	return s.parent | ||
|  | } | ||
|  | 
 | ||
|  | // SpanKind returns the role the span plays in a Trace. | ||
|  | func (s snapshot) SpanKind() trace.SpanKind { | ||
|  | 	return s.spanKind | ||
|  | } | ||
|  | 
 | ||
|  | // StartTime returns the time the span started recording. | ||
|  | func (s snapshot) StartTime() time.Time { | ||
|  | 	return s.startTime | ||
|  | } | ||
|  | 
 | ||
|  | // EndTime returns the time the span stopped recording. It will be zero if | ||
|  | // the span has not ended. | ||
|  | func (s snapshot) EndTime() time.Time { | ||
|  | 	return s.endTime | ||
|  | } | ||
|  | 
 | ||
|  | // Attributes returns the defining attributes of the span. | ||
|  | func (s snapshot) Attributes() []attribute.KeyValue { | ||
|  | 	return s.attributes | ||
|  | } | ||
|  | 
 | ||
|  | // Links returns all the links the span has to other spans. | ||
|  | func (s snapshot) Links() []Link { | ||
|  | 	return s.links | ||
|  | } | ||
|  | 
 | ||
|  | // Events returns all the events that occurred within in the spans | ||
|  | // lifetime. | ||
|  | func (s snapshot) Events() []Event { | ||
|  | 	return s.events | ||
|  | } | ||
|  | 
 | ||
|  | // Status returns the spans status. | ||
|  | func (s snapshot) Status() Status { | ||
|  | 	return s.status | ||
|  | } | ||
|  | 
 | ||
|  | // InstrumentationScope returns information about the instrumentation | ||
|  | // scope that created the span. | ||
|  | func (s snapshot) InstrumentationScope() instrumentation.Scope { | ||
|  | 	return s.instrumentationScope | ||
|  | } | ||
|  | 
 | ||
|  | // InstrumentationLibrary returns information about the instrumentation | ||
|  | // library that created the span. | ||
|  | func (s snapshot) InstrumentationLibrary() instrumentation.Library { | ||
|  | 	return s.instrumentationScope | ||
|  | } | ||
|  | 
 | ||
|  | // Resource returns information about the entity that produced the span. | ||
|  | func (s snapshot) Resource() *resource.Resource { | ||
|  | 	return s.resource | ||
|  | } | ||
|  | 
 | ||
|  | // DroppedAttributes returns the number of attributes dropped by the span | ||
|  | // due to limits being reached. | ||
|  | func (s snapshot) DroppedAttributes() int { | ||
|  | 	return s.droppedAttributeCount | ||
|  | } | ||
|  | 
 | ||
|  | // DroppedLinks returns the number of links dropped by the span due to limits | ||
|  | // being reached. | ||
|  | func (s snapshot) DroppedLinks() int { | ||
|  | 	return s.droppedLinkCount | ||
|  | } | ||
|  | 
 | ||
|  | // DroppedEvents returns the number of events dropped by the span due to | ||
|  | // limits being reached. | ||
|  | func (s snapshot) DroppedEvents() int { | ||
|  | 	return s.droppedEventCount | ||
|  | } | ||
|  | 
 | ||
|  | // ChildSpanCount returns the count of spans that consider the span a | ||
|  | // direct parent. | ||
|  | func (s snapshot) ChildSpanCount() int { | ||
|  | 	return s.childSpanCount | ||
|  | } |