trace_notrace.go raw

   1  //go:build grpcnotrace
   2  
   3  /*
   4   *
   5   * Copyright 2024 gRPC authors.
   6   *
   7   * Licensed under the Apache License, Version 2.0 (the "License");
   8   * you may not use this file except in compliance with the License.
   9   * You may obtain a copy of the License at
  10   *
  11   *     http://www.apache.org/licenses/LICENSE-2.0
  12   *
  13   * Unless required by applicable law or agreed to in writing, software
  14   * distributed under the License is distributed on an "AS IS" BASIS,
  15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16   * See the License for the specific language governing permissions and
  17   * limitations under the License.
  18   *
  19   */
  20  
  21  package grpc
  22  
  23  // grpcnotrace can be used to avoid importing golang.org/x/net/trace, which in
  24  // turn enables binaries using gRPC-Go for dead code elimination, which can
  25  // yield 10-15% improvements in binary size when tracing is not needed.
  26  
  27  import (
  28  	"context"
  29  	"fmt"
  30  )
  31  
  32  type notrace struct{}
  33  
  34  func (notrace) LazyLog(x fmt.Stringer, sensitive bool) {}
  35  func (notrace) LazyPrintf(format string, a ...any)     {}
  36  func (notrace) SetError()                              {}
  37  func (notrace) SetRecycler(f func(any))                {}
  38  func (notrace) SetTraceInfo(traceID, spanID uint64)    {}
  39  func (notrace) SetMaxEvents(m int)                     {}
  40  func (notrace) Finish()                                {}
  41  
  42  func newTrace(family, title string) traceLog {
  43  	return notrace{}
  44  }
  45  
  46  func newTraceContext(ctx context.Context, tr traceLog) context.Context {
  47  	return ctx
  48  }
  49  
  50  func newTraceEventLog(family, title string) traceEventLog {
  51  	return nil
  52  }
  53