Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / internal / event / core / fast.go
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 }