github.com/v2fly/tools@v0.100.0/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  	"github.com/v2fly/tools/internal/event/keys"
    11  	"github.com/v2fly/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  }