]> Sergey Matveev's repositories - btrtrc.git/blob - dialer/dialer.go
Drop support for go 1.20
[btrtrc.git] / dialer / dialer.go
1 package dialer
2
3 import (
4         "context"
5         "net"
6 )
7
8 // Dialers have the network locked in.
9 type T interface {
10         Dial(_ context.Context, addr string) (net.Conn, error)
11         DialerNetwork() string
12 }
13
14 // An interface to ease wrapping dialers that explicitly include a network parameter.
15 type WithContext interface {
16         DialContext(ctx context.Context, network, addr string) (net.Conn, error)
17 }
18
19 // Used by wrappers of standard library network types.
20 var Default = &net.Dialer{}
21
22 // Adapts a WithContext to the Dial interface in this package.
23 type WithNetwork struct {
24         Network string
25         Dialer  WithContext
26 }
27
28 func (me WithNetwork) DialerNetwork() string {
29         return me.Network
30 }
31
32 func (me WithNetwork) Dial(ctx context.Context, addr string) (_ net.Conn, err error) {
33         return me.Dialer.DialContext(ctx, me.Network, addr)
34 }