package net import ( "bufio" "net" ) type BufferedConn struct { r *bufio.Reader net.Conn } func NewBufferedConn(c net.Conn) *BufferedConn { if bc, ok := c.(*BufferedConn); ok { return bc } return &BufferedConn{bufio.NewReader(c), c} } // Reader returns the internal bufio.Reader. func (c *BufferedConn) Reader() *bufio.Reader { return c.r } // Peek returns the next n bytes without advancing the reader. func (c *BufferedConn) Peek(n int) ([]byte, error) { return c.r.Peek(n) } func (c *BufferedConn) Read(p []byte) (int, error) { return c.r.Read(p) } func (c *BufferedConn) ReadByte() (byte, error) { return c.r.ReadByte() } func (c *BufferedConn) UnreadByte() error { return c.r.UnreadByte() } func (c *BufferedConn) Buffered() int { return c.r.Buffered() }