github.com/codingeasygo/util@v0.0.0-20231206062002-1ce2f004b7d9/xio/wrapper.go (about)

     1  package xio
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"net"
     7  	"time"
     8  )
     9  
    10  // ReaderF is wrapper for io.Reader
    11  type ReaderF func(p []byte) (n int, err error)
    12  
    13  func (r ReaderF) Read(p []byte) (n int, err error) {
    14  	n, err = r(p)
    15  	return
    16  }
    17  
    18  // WriterF is wrapper for io.Writer
    19  type WriterF func(p []byte) (n int, err error)
    20  
    21  func (w WriterF) Write(p []byte) (n int, err error) {
    22  	n, err = w(p)
    23  	return
    24  }
    25  
    26  // CloserF is wrapper for io.Closer
    27  type CloserF func() (err error)
    28  
    29  // Close will close by func
    30  func (c CloserF) Close() (err error) {
    31  	err = c()
    32  	return
    33  }
    34  
    35  // ConnWrapper is wrapper for net.Conn by ReadWriteCloser
    36  type ConnWrapper struct {
    37  	io.ReadWriteCloser
    38  }
    39  
    40  // NewConnWrapper will create new ConnWrapper
    41  func NewConnWrapper(base io.ReadWriteCloser) (wrapper *ConnWrapper) {
    42  	return &ConnWrapper{ReadWriteCloser: base}
    43  }
    44  
    45  // Network impl net.Addr
    46  func (c *ConnWrapper) Network() string {
    47  	return "wrapper"
    48  }
    49  
    50  func (c *ConnWrapper) String() string {
    51  	return fmt.Sprintf("%v", c.ReadWriteCloser)
    52  }
    53  
    54  // LocalAddr return then local network address
    55  func (c *ConnWrapper) LocalAddr() net.Addr {
    56  	return c
    57  }
    58  
    59  // RemoteAddr returns the remote network address.
    60  func (c *ConnWrapper) RemoteAddr() net.Addr {
    61  	return c
    62  }
    63  
    64  // SetDeadline impl net.Conn do nothing
    65  func (c *ConnWrapper) SetDeadline(t time.Time) error {
    66  	return nil
    67  }
    68  
    69  // SetReadDeadline impl net.Conn do nothing
    70  func (c *ConnWrapper) SetReadDeadline(t time.Time) error {
    71  	return nil
    72  }
    73  
    74  // SetWriteDeadline impl net.Conn do nothing
    75  func (c *ConnWrapper) SetWriteDeadline(t time.Time) error {
    76  	return nil
    77  }