Documentation
¶
Overview ¶
Package twirp provides tracing functions for tracing clients and servers generated by the twirp framework (https://github.com/twitchtv/twirp).
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewServerHooks ¶
func NewServerHooks(opts ...Option) *twirp.ServerHooks
NewServerHooks creates the callback hooks for a twirp server to perform tracing. It is used in conjunction with WrapServer.
func WrapServer ¶
WrapServer wraps an http.Handler to add distributed tracing to a Twirp server.
Example ¶
package main
import (
"context"
"net/http"
twirptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/twitchtv/twirp"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"github.com/twitchtv/twirp/example"
)
type hatmaker struct{}
func (hatmaker) MakeHat(_ context.Context, _ *example.Size) (*example.Hat, error) {
return &example.Hat{
Size: 42,
Color: "cornflower blue",
Name: "oversized blue hat",
}, nil
}
func main() {
tracer.Start()
defer tracer.Stop()
server := example.NewHaberdasherServer(hatmaker{}, twirptrace.NewServerHooks())
traced := twirptrace.WrapServer(server)
http.ListenAndServe(":8080", traced)
}
Output:
Types ¶
type HTTPClient ¶
HTTPClient is duplicated from twirp's generated service code. It is declared in this package so that the client can be wrapped to initiate traces.
func WrapClient ¶
func WrapClient(c HTTPClient, opts ...Option) HTTPClient
WrapClient wraps an HTTPClient to add distributed tracing to its requests.
Example ¶
package main
import (
"context"
"fmt"
"net/http"
twirptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/twitchtv/twirp"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"github.com/twitchtv/twirp/example"
)
func main() {
tracer.Start()
defer tracer.Stop()
client := example.NewHaberdasherJSONClient("http://localhost:8080", twirptrace.WrapClient(&http.Client{}))
for i := 0; i < 10; i++ {
hat, err := client.MakeHat(context.Background(), &example.Size{Inches: 6})
if err != nil {
fmt.Println("error making hat:", err)
continue
}
fmt.Println("made hat:", hat)
}
}
Output:
type Option ¶
Option represents an option that can be passed to Dial.
func WithAnalytics ¶
WithAnalytics enables Trace Analytics for all started spans.
func WithAnalyticsRate ¶
WithAnalyticsRate sets the sampling rate for Trace Analytics events correlated to started spans.
func WithServiceName ¶
WithServiceName sets the given service name for the dialled connection. When the service name is not explicitly set, it will be inferred based on the request to the twirp service.