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 }