36
}
37
38
>
func (d *dialTracer) beginNetworkDial(ctx context.Context) (context.Context, *networkDialTrace) {
dial_tracer.go
39
>
ndt := &networkDialTrace{startedAt: time.Now()}
40
>
41
>
// Build a ClientTrace capturing TCP connections.
42
>
trace := &httptrace.ClientTrace{
43
>
ConnectStart: func(_, _ string) {
44
ndt.connectStart = time.Now()
45
},
46
>
ConnectDone: func(_ string, addr string, err error) {
dial_tracer.go
47
>
// ConnectStart may not have been called if the address is reused
48
>
if !ndt.connectStart.IsZero() {
49
ndt.connectDuration = time.Since(ndt.connectStart)
50
}
52
>
ndt.connectErr = err
53
},
54
}
55
57
}
58
59
>
func (d *dialTracer) endNetworkDial(ndt *networkDialTrace, dialErr error) {
dial_tracer.go
60
>
total := time.Since(ndt.startedAt)
61
>
62
>
if dialErr != nil {
63
fields := []tag.Tag{
64
tag.Duration("totalDuration", total),