runtime.go 815 B

1234567891011121314151617181920212223242526272829303132333435
  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. }
  14. // NewRuntime returns a Runtime
  15. func NewRuntime(readTimeout, connectTimeout int, proxy string, host string) *Runtime {
  16. return &Runtime{
  17. ReadTimeout: readTimeout,
  18. ConnectTimeout: connectTimeout,
  19. Proxy: proxy,
  20. Host: host,
  21. }
  22. }
  23. // Timeout is for connect Timeout
  24. func Timeout(connectTimeout time.Duration) func(cxt context.Context, net, addr string) (c net.Conn, err error) {
  25. return func(ctx context.Context, network, address string) (net.Conn, error) {
  26. return (&net.Dialer{
  27. Timeout: connectTimeout,
  28. DualStack: true,
  29. }).DialContext(ctx, network, address)
  30. }
  31. }