123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package mux
- import (
- "net"
- "time"
- )
- type PortConn struct {
- Conn net.Conn
- rs []byte
- start int
- }
- func newPortConn(conn net.Conn, rs []byte) *PortConn {
- return &PortConn{
- Conn: conn,
- rs: rs,
- }
- }
- func (pConn *PortConn) Read(b []byte) (n int, err error) {
- if len(b) < len(pConn.rs)-pConn.start {
- defer func() {
- pConn.start = pConn.start + len(b)
- }()
- return copy(b, pConn.rs), nil
- }
- if pConn.start < len(pConn.rs) {
- defer func() {
- pConn.start = len(pConn.rs)
- }()
- return copy(b, pConn.rs[pConn.start:]), nil
- }
- return pConn.Conn.Read(b)
- }
- func (pConn *PortConn) Write(b []byte) (n int, err error) {
- return pConn.Conn.Write(b)
- }
- func (pConn *PortConn) Close() error {
- return pConn.Conn.Close()
- }
- func (pConn *PortConn) LocalAddr() net.Addr {
- return pConn.Conn.LocalAddr()
- }
- func (pConn *PortConn) RemoteAddr() net.Addr {
- return pConn.Conn.RemoteAddr()
- }
- func (pConn *PortConn) SetDeadline(t time.Time) error {
- return pConn.Conn.SetDeadline(t)
- }
- func (pConn *PortConn) SetReadDeadline(t time.Time) error {
- return pConn.Conn.SetReadDeadline(t)
- }
- func (pConn *PortConn) SetWriteDeadline(t time.Time) error {
- return pConn.Conn.SetWriteDeadline(t)
- }
|