package http3

import (
	
	
	
	
	

	
)

func traceGetConn( *httptrace.ClientTrace,  string) {
	if  != nil && .GetConn != nil {
		.GetConn()
	}
}

// fakeConn is a wrapper for quic.EarlyConnection
// because the quic connection does not implement net.Conn.
type fakeConn struct {
	conn *quic.Conn
}

func ( *fakeConn) () error                       { panic("connection operation prohibited") }
func ( *fakeConn) ( []byte) (int, error)         { panic("connection operation prohibited") }
func ( *fakeConn) ( []byte) (int, error)        { panic("connection operation prohibited") }
func ( *fakeConn) ( time.Time) error      { panic("connection operation prohibited") }
func ( *fakeConn) ( time.Time) error  { panic("connection operation prohibited") }
func ( *fakeConn) ( time.Time) error { panic("connection operation prohibited") }
func ( *fakeConn) () net.Addr               { return .conn.RemoteAddr() }
func ( *fakeConn) () net.Addr                { return .conn.LocalAddr() }

func traceGotConn( *httptrace.ClientTrace,  *quic.Conn,  bool) {
	if  != nil && .GotConn != nil {
		.GotConn(httptrace.GotConnInfo{
			Conn:   &fakeConn{conn: },
			Reused: ,
		})
	}
}

func traceGotFirstResponseByte( *httptrace.ClientTrace) {
	if  != nil && .GotFirstResponseByte != nil {
		.GotFirstResponseByte()
	}
}

func traceGot1xxResponse( *httptrace.ClientTrace,  int,  textproto.MIMEHeader) {
	if  != nil && .Got1xxResponse != nil {
		.Got1xxResponse(, )
	}
}

func traceGot100Continue( *httptrace.ClientTrace) {
	if  != nil && .Got100Continue != nil {
		.Got100Continue()
	}
}

func traceHasWroteHeaderField( *httptrace.ClientTrace) bool {
	return  != nil && .WroteHeaderField != nil
}

func traceWroteHeaderField( *httptrace.ClientTrace, ,  string) {
	if  != nil && .WroteHeaderField != nil {
		.WroteHeaderField(, []string{})
	}
}

func traceWroteHeaders( *httptrace.ClientTrace) {
	if  != nil && .WroteHeaders != nil {
		.WroteHeaders()
	}
}

func traceWroteRequest( *httptrace.ClientTrace,  error) {
	if  != nil && .WroteRequest != nil {
		.WroteRequest(httptrace.WroteRequestInfo{Err: })
	}
}

func traceConnectStart( *httptrace.ClientTrace, ,  string) {
	if  != nil && .ConnectStart != nil {
		.ConnectStart(, )
	}
}

func traceConnectDone( *httptrace.ClientTrace, ,  string,  error) {
	if  != nil && .ConnectDone != nil {
		.ConnectDone(, , )
	}
}

func traceTLSHandshakeStart( *httptrace.ClientTrace) {
	if  != nil && .TLSHandshakeStart != nil {
		.TLSHandshakeStart()
	}
}

func traceTLSHandshakeDone( *httptrace.ClientTrace,  tls.ConnectionState,  error) {
	if  != nil && .TLSHandshakeDone != nil {
		.TLSHandshakeDone(, )
	}
}