runtime.go 838 B

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