github.com/aliyun/credentials-go@v1.4.7/credentials/internal/utils/runtime.go (about) 1 package utils 2 3 import ( 4 "context" 5 "net" 6 "time" 7 ) 8 9 // Runtime is for setting timeout, proxy and host 10 type Runtime struct { 11 ReadTimeout int 12 ConnectTimeout int 13 Proxy string 14 Host string 15 STSEndpoint string 16 } 17 18 // NewRuntime returns a Runtime 19 func NewRuntime(readTimeout, connectTimeout int, proxy string, host string) *Runtime { 20 return &Runtime{ 21 ReadTimeout: readTimeout, 22 ConnectTimeout: connectTimeout, 23 Proxy: proxy, 24 Host: host, 25 } 26 } 27 28 // Timeout is for connect Timeout 29 func Timeout(connectTimeout time.Duration) func(cxt context.Context, net, addr string) (c net.Conn, err error) { 30 return func(ctx context.Context, network, address string) (net.Conn, error) { 31 return (&net.Dialer{ 32 Timeout: connectTimeout, 33 DualStack: true, 34 }).DialContext(ctx, network, address) 35 } 36 }