Source File
nettrace.go
Belonging Package
internal/nettrace
// Copyright 2016 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// Package nettrace contains internal hooks for tracing activity in// the net package. This package is purely internal for use by the// net/http/httptrace package and has no stable API exposed to end// users.package nettrace// TraceKey is a context.Context Value key. Its associated value should// be a *Trace struct.type TraceKey struct{}// LookupIPAltResolverKey is a context.Context Value key used by tests to// specify an alternate resolver func.// It is not exposed to outsider users. (But see issue 12503)// The value should be the same type as lookupIP:// func lookupIP(ctx context.Context, host string) ([]IPAddr, error)type LookupIPAltResolverKey struct{}// Trace contains a set of hooks for tracing events within// the net package. Any specific hook may be nil.type Trace struct {// DNSStart is called with the hostname of a DNS lookup// before it begins.DNSStart func(name string)// DNSDone is called after a DNS lookup completes (or fails).// The coalesced parameter is whether singleflight de-dupped// the call. The addrs are of type net.IPAddr but can't// actually be for circular dependency reasons.DNSDone func(netIPs []interface{}, coalesced bool, err error)// ConnectStart is called before a Dial, excluding Dials made// during DNS lookups. In the case of DualStack (Happy Eyeballs)// dialing, this may be called multiple times, from multiple// goroutines.ConnectStart func(network, addr string)// ConnectStart is called after a Dial with the results, excluding// Dials made during DNS lookups. It may also be called multiple// times, like ConnectStart.ConnectDone func(network, addr string, err error)}