8 "github.com/go-redis/redis/internal/proto"
11 var noDeadline = time.Time{}
23 func NewConn(netConn net.Conn) *Conn {
26 Wb: proto.NewWriteBuffer(),
28 cn.Rd = proto.NewReader(cn.netConn)
29 cn.SetUsedAt(time.Now())
33 func (cn *Conn) UsedAt() time.Time {
34 return cn.usedAt.Load().(time.Time)
37 func (cn *Conn) SetUsedAt(tm time.Time) {
41 func (cn *Conn) SetNetConn(netConn net.Conn) {
46 func (cn *Conn) IsStale(timeout time.Duration) bool {
47 return timeout > 0 && time.Since(cn.UsedAt()) > timeout
50 func (cn *Conn) SetReadTimeout(timeout time.Duration) {
54 cn.netConn.SetReadDeadline(now.Add(timeout))
56 cn.netConn.SetReadDeadline(noDeadline)
60 func (cn *Conn) SetWriteTimeout(timeout time.Duration) {
64 cn.netConn.SetWriteDeadline(now.Add(timeout))
66 cn.netConn.SetWriteDeadline(noDeadline)
70 func (cn *Conn) Write(b []byte) (int, error) {
71 return cn.netConn.Write(b)
74 func (cn *Conn) RemoteAddr() net.Addr {
75 return cn.netConn.RemoteAddr()
78 func (cn *Conn) Close() error {
79 return cn.netConn.Close()