in xray/httptrace.go [215:257]
func NewClientTrace(opCtx context.Context) (ct *ClientTrace, err error) {
if opCtx == nil {
return nil, errors.New("opCtx must be non-nil")
}
segs := NewHTTPSubsegments(opCtx)
return &ClientTrace{
subsegments: segs,
httpTrace: &httptrace.ClientTrace{
GetConn: func(hostPort string) {
segs.GetConn(hostPort)
},
DNSStart: func(info httptrace.DNSStartInfo) {
segs.DNSStart(info)
},
DNSDone: func(info httptrace.DNSDoneInfo) {
segs.DNSDone(info)
},
ConnectStart: func(network, addr string) {
segs.ConnectStart(network, addr)
},
ConnectDone: func(network, addr string, err error) {
segs.ConnectDone(network, addr, err)
},
TLSHandshakeStart: func() {
segs.TLSHandshakeStart()
},
TLSHandshakeDone: func(connState tls.ConnectionState, err error) {
segs.TLSHandshakeDone(connState, err)
},
GotConn: func(info httptrace.GotConnInfo) {
segs.GotConn(&info, nil)
},
WroteRequest: func(info httptrace.WroteRequestInfo) {
segs.WroteRequest(info)
},
GotFirstResponseByte: func() {
segs.GotFirstResponseByte()
},
},
}, nil
}