X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%40v0.0.0-20201105173854-bc9fc8d8c4bc%2Finternal%2Fevent%2Fexport%2Ftrace.go;fp=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fgolang.org%2Fx%2Ftools%40v0.0.0-20201105173854-bc9fc8d8c4bc%2Finternal%2Fevent%2Fexport%2Ftrace.go;h=0000000000000000000000000000000000000000;hb=3ddadb3c98564791f0ac36cb39771d844a63dc91;hp=1a99482f1d9b47769b330db5f4a6b59dace1e177;hpb=5f797af6612ed10887189b47a1efc2f915586e59;p=dotfiles%2F.git diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/internal/event/export/trace.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/internal/event/export/trace.go deleted file mode 100644 index 1a99482f..00000000 --- a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/internal/event/export/trace.go +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package export - -import ( - "context" - "fmt" - "sync" - - "golang.org/x/tools/internal/event" - "golang.org/x/tools/internal/event/core" - "golang.org/x/tools/internal/event/keys" - "golang.org/x/tools/internal/event/label" -) - -type SpanContext struct { - TraceID TraceID - SpanID SpanID -} - -type Span struct { - Name string - ID SpanContext - ParentID SpanID - mu sync.Mutex - start core.Event - finish core.Event - events []core.Event -} - -type contextKeyType int - -const ( - spanContextKey = contextKeyType(iota) - labelContextKey -) - -func GetSpan(ctx context.Context) *Span { - v := ctx.Value(spanContextKey) - if v == nil { - return nil - } - return v.(*Span) -} - -// Spans creates an exporter that maintains hierarchical span structure in the -// context. -// It creates new spans on start events, adds events to the current span on -// log or label, and closes the span on end events. -// The span structure can then be used by other exporters. -func Spans(output event.Exporter) event.Exporter { - return func(ctx context.Context, ev core.Event, lm label.Map) context.Context { - switch { - case event.IsLog(ev), event.IsLabel(ev): - if span := GetSpan(ctx); span != nil { - span.mu.Lock() - span.events = append(span.events, ev) - span.mu.Unlock() - } - case event.IsStart(ev): - span := &Span{ - Name: keys.Start.Get(lm), - start: ev, - } - if parent := GetSpan(ctx); parent != nil { - span.ID.TraceID = parent.ID.TraceID - span.ParentID = parent.ID.SpanID - } else { - span.ID.TraceID = newTraceID() - } - span.ID.SpanID = newSpanID() - ctx = context.WithValue(ctx, spanContextKey, span) - case event.IsEnd(ev): - if span := GetSpan(ctx); span != nil { - span.mu.Lock() - span.finish = ev - span.mu.Unlock() - } - case event.IsDetach(ev): - ctx = context.WithValue(ctx, spanContextKey, nil) - } - return output(ctx, ev, lm) - } -} - -func (s *SpanContext) Format(f fmt.State, r rune) { - fmt.Fprintf(f, "%v:%v", s.TraceID, s.SpanID) -} - -func (s *Span) Start() core.Event { - // start never changes after construction, so we dont need to hold the mutex - return s.start -} - -func (s *Span) Finish() core.Event { - s.mu.Lock() - defer s.mu.Unlock() - return s.finish -} - -func (s *Span) Events() []core.Event { - s.mu.Lock() - defer s.mu.Unlock() - return s.events -} - -func (s *Span) Format(f fmt.State, r rune) { - s.mu.Lock() - defer s.mu.Unlock() - fmt.Fprintf(f, "%v %v", s.Name, s.ID) - if s.ParentID.IsValid() { - fmt.Fprintf(f, "[%v]", s.ParentID) - } - fmt.Fprintf(f, " %v->%v", s.start, s.finish) -}