Opentracing support
This commit is contained in:
parent
8394549857
commit
30ffba78e6
272 changed files with 44352 additions and 63 deletions
60
vendor/github.com/openzipkin/zipkin-go-opentracing/recorder.go
generated
vendored
Normal file
60
vendor/github.com/openzipkin/zipkin-go-opentracing/recorder.go
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
package zipkintracer
|
||||
|
||||
import "sync"
|
||||
|
||||
// A SpanRecorder handles all of the `RawSpan` data generated via an
|
||||
// associated `Tracer` (see `NewStandardTracer`) instance. It also names
|
||||
// the containing process and provides access to a straightforward tag map.
|
||||
type SpanRecorder interface {
|
||||
// Implementations must determine whether and where to store `span`.
|
||||
RecordSpan(span RawSpan)
|
||||
}
|
||||
|
||||
// InMemorySpanRecorder is a simple thread-safe implementation of
|
||||
// SpanRecorder that stores all reported spans in memory, accessible
|
||||
// via reporter.GetSpans(). It is primarily intended for testing purposes.
|
||||
type InMemorySpanRecorder struct {
|
||||
sync.RWMutex
|
||||
spans []RawSpan
|
||||
}
|
||||
|
||||
// NewInMemoryRecorder creates new InMemorySpanRecorder
|
||||
func NewInMemoryRecorder() *InMemorySpanRecorder {
|
||||
return new(InMemorySpanRecorder)
|
||||
}
|
||||
|
||||
// RecordSpan implements the respective method of SpanRecorder.
|
||||
func (r *InMemorySpanRecorder) RecordSpan(span RawSpan) {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
r.spans = append(r.spans, span)
|
||||
}
|
||||
|
||||
// GetSpans returns a copy of the array of spans accumulated so far.
|
||||
func (r *InMemorySpanRecorder) GetSpans() []RawSpan {
|
||||
r.RLock()
|
||||
defer r.RUnlock()
|
||||
spans := make([]RawSpan, len(r.spans))
|
||||
copy(spans, r.spans)
|
||||
return spans
|
||||
}
|
||||
|
||||
// GetSampledSpans returns a slice of spans accumulated so far which were sampled.
|
||||
func (r *InMemorySpanRecorder) GetSampledSpans() []RawSpan {
|
||||
r.RLock()
|
||||
defer r.RUnlock()
|
||||
spans := make([]RawSpan, 0, len(r.spans))
|
||||
for _, span := range r.spans {
|
||||
if span.Context.Sampled {
|
||||
spans = append(spans, span)
|
||||
}
|
||||
}
|
||||
return spans
|
||||
}
|
||||
|
||||
// Reset clears the internal array of spans.
|
||||
func (r *InMemorySpanRecorder) Reset() {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
r.spans = nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue