Opentracing support
This commit is contained in:
parent
8394549857
commit
30ffba78e6
272 changed files with 44352 additions and 63 deletions
77
vendor/github.com/openzipkin/zipkin-go-opentracing/collector.go
generated
vendored
Normal file
77
vendor/github.com/openzipkin/zipkin-go-opentracing/collector.go
generated
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
package zipkintracer
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore"
|
||||
)
|
||||
|
||||
// Collector represents a Zipkin trace collector, which is probably a set of
|
||||
// remote endpoints.
|
||||
type Collector interface {
|
||||
Collect(*zipkincore.Span) error
|
||||
Close() error
|
||||
}
|
||||
|
||||
// NopCollector implements Collector but performs no work.
|
||||
type NopCollector struct{}
|
||||
|
||||
// Collect implements Collector.
|
||||
func (NopCollector) Collect(*zipkincore.Span) error { return nil }
|
||||
|
||||
// Close implements Collector.
|
||||
func (NopCollector) Close() error { return nil }
|
||||
|
||||
// MultiCollector implements Collector by sending spans to all collectors.
|
||||
type MultiCollector []Collector
|
||||
|
||||
// Collect implements Collector.
|
||||
func (c MultiCollector) Collect(s *zipkincore.Span) error {
|
||||
return c.aggregateErrors(func(coll Collector) error { return coll.Collect(s) })
|
||||
}
|
||||
|
||||
// Close implements Collector.
|
||||
func (c MultiCollector) Close() error {
|
||||
return c.aggregateErrors(func(coll Collector) error { return coll.Close() })
|
||||
}
|
||||
|
||||
func (c MultiCollector) aggregateErrors(f func(c Collector) error) error {
|
||||
var e *collectionError
|
||||
for i, collector := range c {
|
||||
if err := f(collector); err != nil {
|
||||
if e == nil {
|
||||
e = &collectionError{
|
||||
errs: make([]error, len(c)),
|
||||
}
|
||||
}
|
||||
e.errs[i] = err
|
||||
}
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
// CollectionError represents an array of errors returned by one or more
|
||||
// failed Collector methods.
|
||||
type CollectionError interface {
|
||||
Error() string
|
||||
GetErrors() []error
|
||||
}
|
||||
|
||||
type collectionError struct {
|
||||
errs []error
|
||||
}
|
||||
|
||||
func (c *collectionError) Error() string {
|
||||
errs := []string{}
|
||||
for _, err := range c.errs {
|
||||
if err != nil {
|
||||
errs = append(errs, err.Error())
|
||||
}
|
||||
}
|
||||
return strings.Join(errs, "; ")
|
||||
}
|
||||
|
||||
// GetErrors implements CollectionError
|
||||
func (c *collectionError) GetErrors() []error {
|
||||
return c.errs
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue