45 lines
1.8 KiB
Go
45 lines
1.8 KiB
Go
// 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-duped
|
|
// the call. The addrs are of type net.IPAddr but can't
|
|
// actually be for circular dependency reasons.
|
|
DNSDone func(netIPs []any, 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)
|
|
}
|