diff --git a/pkg/connection/connection.go b/pkg/connection/connection.go index bf252b9..593d9f1 100644 --- a/pkg/connection/connection.go +++ b/pkg/connection/connection.go @@ -22,6 +22,8 @@ type Connection interface { Printf(fmt string, v ...interface{}) (n int, err error) ModWriteBufSize(n int) + ModReadTimeoutMS(n int) + ModWriteTimeoutMS(n int) } type Config struct { @@ -58,7 +60,9 @@ type connection struct { config Config } -// 这个函数不加锁,由调用方保证不和写操作并发执行 +// Mod函数不加锁 + +// 由调用方保证不和写操作并发执行 func (c *connection) ModWriteBufSize(n int) { if c.config.WriteBufSize > 0 { // 如果之前已经设置过写缓冲,直接 panic @@ -69,6 +73,20 @@ func (c *connection) ModWriteBufSize(n int) { c.w = bufio.NewWriterSize(c.Conn, n) } +func (c *connection) ModReadTimeoutMS(n int) { + if c.config.ReadTimeoutMS > 0 { + panic(connectionErr) + } + c.config.ReadTimeoutMS = n +} + +func (c *connection) ModWriteTimeoutMS(n int) { + if c.config.WriteTimeoutMS > 0 { + panic(connectionErr) + } + c.config.WriteTimeoutMS = n +} + func (c *connection) ReadAtLeast(buf []byte, min int) (n int, err error) { if c.config.ReadTimeoutMS > 0 { _ = c.Conn.SetReadDeadline(time.Now().Add(time.Duration(c.config.ReadTimeoutMS) * time.Millisecond))