1package xmpp 2 3import ( 4 "net" 5 "time" 6) 7 8type timeoutableConn struct { 9 net.Conn 10 duration time.Duration 11} 12 13func (c *timeoutableConn) Read(b []byte) (n int, err error) { 14 deadline := time.Now().Add(c.duration) 15 c.Conn.SetReadDeadline(deadline) 16 n, err = c.Conn.Read(b) 17 c.Conn.SetReadDeadline(time.Time{}) 18 19 return 20} 21 22func (c *timeoutableConn) Write(b []byte) (n int, err error) { 23 deadline := time.Now().Add(c.duration) 24 c.Conn.SetWriteDeadline(deadline) 25 n, err = c.Conn.Write(b) 26 c.Conn.SetWriteDeadline(time.Time{}) 27 28 return 29} 30