Documentation ¶
Overview ¶
Package twirpotel provides tracing for twirp servers and clients.
Index ¶
Examples ¶
Constants ¶
View Source
const ( // InstrumentationName is the name used for intrumentation in traces. InstrumentationName = "github.com/bakins/twirpotel" // PackageNameKey is the twirp package name PackageNameKey = attribute.Key("twirp.package") // ServiceNameKey is the twirp service name ServiceNameKey = attribute.Key("twirp.service") // MethodNameKey is the twirp method name MethodNameKey = attribute.Key("twirp.method") // ErrorCodeKey is the twirp error code ErrorCodeKey = attribute.Key("twirp.error_code") // ErrorMessageKey is the twirp error message ErrorMessageKey = attribute.Key("twirp.error_message") )
Variables ¶
View Source
var NoErrorCode = attribute.StringValue("ok")
NoErrorCode is the ErrorCode used when there is no error
Functions ¶
func ClientInterceptor ¶
func ClientInterceptor(options ...Option) twirp.Interceptor
ClientInterceptor creates interceptors suitable to be used with twirp client.
func ServerInterceptor ¶
func ServerInterceptor(options ...Option) twirp.Interceptor
ServerInterceptor creates interceptors suitable to be used with a twirp server.
Example ¶
package main import ( "context" "math/rand" "net/http" "github.com/twitchtv/twirp" "github.com/twitchtv/twirp/example" "github.com/bakins/twirpotel" ) func main() { // Add the server interceptor to your twirp server ts := example.NewHaberdasherServer( &randomHaberdasher{}, // implements example.Haberdasher twirp.WithServerInterceptors(twirpotel.ServerInterceptor()), ) http.Handle(ts.PathPrefix(), ts) } type randomHaberdasher struct{} func (h *randomHaberdasher) MakeHat(_ context.Context, size *example.Size) (*example.Hat, error) { if size.Inches <= 0 { return nil, twirp.InvalidArgumentError("Inches", "I can't make a hat that small!") } colors := []string{"white", "black", "brown", "red", "blue"} names := []string{"bowler", "baseball cap", "top hat", "derby"} return &example.Hat{ Size: size.Inches, Color: colors[rand.Intn(len(colors))], Name: names[rand.Intn(len(names))], }, nil }
Output:
Types ¶
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option applies an option value for a config.
func WithTracerProvider ¶
func WithTracerProvider(provider trace.TracerProvider) Option
WithTracerProvider returns an Option to use the TracerProvider when creating a Tracer.
Default is to attempt to get from parent span and then otel.GetTracerProvider().
Click to show internal directories.
Click to hide internal directories.