package upgrader

import (
	

	
	
	
)

type transportConn struct {
	network.MuxedConn
	network.ConnMultiaddrs
	network.ConnSecurity
	transport transport.Transport
	scope     network.ConnManagementScope
	stat      network.ConnStats

	muxer                     protocol.ID
	security                  protocol.ID
	usedEarlyMuxerNegotiation bool
}

var _ transport.CapableConn = &transportConn{}

func ( *transportConn) () transport.Transport {
	return .transport
}

func ( *transportConn) () string {
	 := ""
	if ,  := .transport.(fmt.Stringer);  {
		 = "[" + .String() + "]"
	}
	return fmt.Sprintf(
		"<stream.Conn%s %s (%s) <-> %s (%s)>",
		,
		.LocalMultiaddr(),
		.LocalPeer(),
		.RemoteMultiaddr(),
		.RemotePeer(),
	)
}

func ( *transportConn) () network.ConnStats {
	return .stat
}

func ( *transportConn) () network.ConnScope {
	return .scope
}

func ( *transportConn) () error {
	defer .scope.Done()
	return .MuxedConn.Close()
}

func ( *transportConn) () network.ConnectionState {
	return network.ConnectionState{
		StreamMultiplexer:         .muxer,
		Security:                  .security,
		Transport:                 "tcp",
		UsedEarlyMuxerNegotiation: .usedEarlyMuxerNegotiation,
	}
}

func ( *transportConn) ( network.ConnErrorCode) error {
	defer .scope.Done()
	return .MuxedConn.CloseWithError()
}