5
5
"fmt"
6
6
"net"
7
7
"sync"
8
- "time"
9
8
10
9
logging "github.com/ipfs/go-log"
11
10
reuseport "github.com/jbenet/go-reuseport"
@@ -25,6 +24,8 @@ type TcpTransport struct {
25
24
listeners map [string ]tpt.Listener
26
25
}
27
26
27
+ var _ tpt.Transport = & TcpTransport {}
28
+
28
29
// NewTCPTransport creates a tcp transport object that tracks dialers and listeners
29
30
// created. It represents an entire tcp stack (though it might not necessarily be)
30
31
func NewTCPTransport () * TcpTransport {
@@ -54,8 +55,6 @@ func (t *TcpTransport) Dialer(laddr ma.Multiaddr, opts ...tpt.DialOpt) (tpt.Dial
54
55
var doReuse bool
55
56
for _ , o := range opts {
56
57
switch o := o .(type ) {
57
- case tpt.TimeoutOpt :
58
- base .Timeout = time .Duration (o )
59
58
case tpt.ReuseportOpt :
60
59
doReuse = bool (o )
61
60
default :
@@ -135,6 +134,8 @@ type tcpDialer struct {
135
134
transport tpt.Transport
136
135
}
137
136
137
+ var _ tpt.Dialer = & tcpDialer {}
138
+
138
139
func (t * TcpTransport ) newTcpDialer (base manet.Dialer , laddr ma.Multiaddr , doReuse bool ) (* tcpDialer , error ) {
139
140
// get the local net.Addr manually
140
141
la , err := manet .ToNetAddr (laddr )
@@ -195,9 +196,9 @@ func (d *tcpDialer) DialContext(ctx context.Context, raddr ma.Multiaddr) (tpt.Co
195
196
return nil , err
196
197
}
197
198
198
- return & tpt. ConnWrap {
199
+ return & tcpConn {
199
200
Conn : c ,
200
- Tpt : d .transport ,
201
+ t : d .transport ,
201
202
}, nil
202
203
}
203
204
@@ -238,15 +239,17 @@ type tcpListener struct {
238
239
transport tpt.Transport
239
240
}
240
241
242
+ var _ tpt.Listener = & tcpListener {}
243
+
241
244
func (d * tcpListener ) Accept () (tpt.Conn , error ) {
242
245
c , err := d .list .Accept ()
243
246
if err != nil {
244
247
return nil , err
245
248
}
246
249
247
- return & tpt. ConnWrap {
250
+ return & tcpConn {
248
251
Conn : c ,
249
- Tpt : d .transport ,
252
+ t : d .transport ,
250
253
}, nil
251
254
}
252
255
@@ -265,3 +268,15 @@ func (t *tcpListener) NetListener() net.Listener {
265
268
func (d * tcpListener ) Close () error {
266
269
return d .list .Close ()
267
270
}
271
+
272
+ type tcpConn struct {
273
+ manet.Conn
274
+ t tpt.Transport
275
+ }
276
+
277
+ var _ tpt.Conn = & tcpConn {}
278
+ var _ tpt.DuplexConn = & tcpConn {}
279
+
280
+ func (c * tcpConn ) Transport () tpt.Transport {
281
+ return c .t
282
+ }
0 commit comments