1
0
mirror of https://github.com/redis/go-redis.git synced 2025-10-30 16:45:34 +03:00

Update conn.UsedAt on Read/Write. Fixes #263.

This commit is contained in:
Vladimir Mihailenco
2016-03-02 13:26:05 +02:00
parent a4e4d1da06
commit 78d40d5bd7
3 changed files with 31 additions and 17 deletions

14
conn.go
View File

@@ -9,7 +9,7 @@ import (
const defaultBufSize = 4096
var (
zeroTime = time.Time{}
noTimeout = time.Time{}
)
type conn struct {
@@ -17,7 +17,7 @@ type conn struct {
rd *bufio.Reader
buf []byte
usedAt time.Time
UsedAt time.Time
ReadTimeout time.Duration
WriteTimeout time.Duration
}
@@ -76,19 +76,21 @@ func (cn *conn) writeCmds(cmds ...Cmder) error {
}
func (cn *conn) Read(b []byte) (int, error) {
cn.UsedAt = time.Now()
if cn.ReadTimeout != 0 {
cn.netcn.SetReadDeadline(time.Now().Add(cn.ReadTimeout))
cn.netcn.SetReadDeadline(cn.UsedAt.Add(cn.ReadTimeout))
} else {
cn.netcn.SetReadDeadline(zeroTime)
cn.netcn.SetReadDeadline(noTimeout)
}
return cn.netcn.Read(b)
}
func (cn *conn) Write(b []byte) (int, error) {
cn.UsedAt = time.Now()
if cn.WriteTimeout != 0 {
cn.netcn.SetWriteDeadline(time.Now().Add(cn.WriteTimeout))
cn.netcn.SetWriteDeadline(cn.UsedAt.Add(cn.WriteTimeout))
} else {
cn.netcn.SetWriteDeadline(zeroTime)
cn.netcn.SetWriteDeadline(noTimeout)
}
return cn.netcn.Write(b)
}