github.com/cockroachdb/tools@v0.0.0-20230222021103-a6d27438930d/internal/event/core/fast.go (about) 1 // Copyright 2019 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package core 6 7 import ( 8 "context" 9 10 "golang.org/x/tools/internal/event/keys" 11 "golang.org/x/tools/internal/event/label" 12 ) 13 14 // Log1 takes a message and one label delivers a log event to the exporter. 15 // It is a customized version of Print that is faster and does no allocation. 16 func Log1(ctx context.Context, message string, t1 label.Label) { 17 Export(ctx, MakeEvent([3]label.Label{ 18 keys.Msg.Of(message), 19 t1, 20 }, nil)) 21 } 22 23 // Log2 takes a message and two labels and delivers a log event to the exporter. 24 // It is a customized version of Print that is faster and does no allocation. 25 func Log2(ctx context.Context, message string, t1 label.Label, t2 label.Label) { 26 Export(ctx, MakeEvent([3]label.Label{ 27 keys.Msg.Of(message), 28 t1, 29 t2, 30 }, nil)) 31 } 32 33 // Metric1 sends a label event to the exporter with the supplied labels. 34 func Metric1(ctx context.Context, t1 label.Label) context.Context { 35 return Export(ctx, MakeEvent([3]label.Label{ 36 keys.Metric.New(), 37 t1, 38 }, nil)) 39 } 40 41 // Metric2 sends a label event to the exporter with the supplied labels. 42 func Metric2(ctx context.Context, t1, t2 label.Label) context.Context { 43 return Export(ctx, MakeEvent([3]label.Label{ 44 keys.Metric.New(), 45 t1, 46 t2, 47 }, nil)) 48 } 49 50 // Start1 sends a span start event with the supplied label list to the exporter. 51 // It also returns a function that will end the span, which should normally be 52 // deferred. 53 func Start1(ctx context.Context, name string, t1 label.Label) (context.Context, func()) { 54 return ExportPair(ctx, 55 MakeEvent([3]label.Label{ 56 keys.Start.Of(name), 57 t1, 58 }, nil), 59 MakeEvent([3]label.Label{ 60 keys.End.New(), 61 }, nil)) 62 } 63 64 // Start2 sends a span start event with the supplied label list to the exporter. 65 // It also returns a function that will end the span, which should normally be 66 // deferred. 67 func Start2(ctx context.Context, name string, t1, t2 label.Label) (context.Context, func()) { 68 return ExportPair(ctx, 69 MakeEvent([3]label.Label{ 70 keys.Start.Of(name), 71 t1, 72 t2, 73 }, nil), 74 MakeEvent([3]label.Label{ 75 keys.End.New(), 76 }, nil)) 77 }