...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package transport
16
17 import (
18 "net"
19 "time"
20 )
21
22 type timeoutConn struct {
23 net.Conn
24 writeTimeout time.Duration
25 readTimeout time.Duration
26 }
27
28 func (c timeoutConn) Write(b []byte) (n int, err error) {
29 if c.writeTimeout > 0 {
30 if err := c.SetWriteDeadline(time.Now().Add(c.writeTimeout)); err != nil {
31 return 0, err
32 }
33 }
34 return c.Conn.Write(b)
35 }
36
37 func (c timeoutConn) Read(b []byte) (n int, err error) {
38 if c.readTimeout > 0 {
39 if err := c.SetReadDeadline(time.Now().Add(c.readTimeout)); err != nil {
40 return 0, err
41 }
42 }
43 return c.Conn.Read(b)
44 }
45
View as plain text