go-micro.dev/v5@v5.12.0/wrapper/trace/opentelemetry/options.go (about)

     1  package opentelemetry
     2  
     3  import (
     4  	"context"
     5  
     6  	"go-micro.dev/v5/client"
     7  	"go-micro.dev/v5/server"
     8  	"go.opentelemetry.io/otel/trace"
     9  )
    10  
    11  type Options struct {
    12  	TraceProvider trace.TracerProvider
    13  
    14  	CallFilter       CallFilter
    15  	StreamFilter     StreamFilter
    16  	PublishFilter    PublishFilter
    17  	SubscriberFilter SubscriberFilter
    18  	HandlerFilter    HandlerFilter
    19  }
    20  
    21  // CallFilter used to filter client.Call, return true to skip call trace.
    22  type CallFilter func(context.Context, client.Request) bool
    23  
    24  // StreamFilter used to filter client.Stream, return true to skip stream trace.
    25  type StreamFilter func(context.Context, client.Request) bool
    26  
    27  // PublishFilter used to filter client.Publish, return true to skip publish trace.
    28  type PublishFilter func(context.Context, client.Message) bool
    29  
    30  // SubscriberFilter used to filter server.Subscribe, return true to skip subcribe trace.
    31  type SubscriberFilter func(context.Context, server.Message) bool
    32  
    33  // HandlerFilter used to filter server.Handle, return true to skip handle trace.
    34  type HandlerFilter func(context.Context, server.Request) bool
    35  
    36  type Option func(*Options)
    37  
    38  func WithTraceProvider(tp trace.TracerProvider) Option {
    39  	return func(o *Options) {
    40  		o.TraceProvider = tp
    41  	}
    42  }
    43  
    44  func WithCallFilter(filter CallFilter) Option {
    45  	return func(o *Options) {
    46  		o.CallFilter = filter
    47  	}
    48  }
    49  
    50  func WithStreamFilter(filter StreamFilter) Option {
    51  	return func(o *Options) {
    52  		o.StreamFilter = filter
    53  	}
    54  }
    55  
    56  func WithPublishFilter(filter PublishFilter) Option {
    57  	return func(o *Options) {
    58  		o.PublishFilter = filter
    59  	}
    60  }
    61  
    62  func WithSubscribeFilter(filter SubscriberFilter) Option {
    63  	return func(o *Options) {
    64  		o.SubscriberFilter = filter
    65  	}
    66  }
    67  
    68  func WithHandleFilter(filter HandlerFilter) Option {
    69  	return func(o *Options) {
    70  		o.HandlerFilter = filter
    71  	}
    72  }