mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1014 B
64 lines
1014 B
package splithttp |
|
|
|
import ( |
|
"io" |
|
"net" |
|
"time" |
|
) |
|
|
|
type splitConn struct { |
|
writer io.WriteCloser |
|
reader io.ReadCloser |
|
remoteAddr net.Addr |
|
localAddr net.Addr |
|
onClose func() |
|
} |
|
|
|
func (c *splitConn) Write(b []byte) (int, error) { |
|
return c.writer.Write(b) |
|
} |
|
|
|
func (c *splitConn) Read(b []byte) (int, error) { |
|
return c.reader.Read(b) |
|
} |
|
|
|
func (c *splitConn) Close() error { |
|
if c.onClose != nil { |
|
c.onClose() |
|
} |
|
|
|
err := c.writer.Close() |
|
err2 := c.reader.Close() |
|
if err != nil { |
|
return err |
|
} |
|
|
|
if err2 != nil { |
|
return err |
|
} |
|
|
|
return nil |
|
} |
|
|
|
func (c *splitConn) LocalAddr() net.Addr { |
|
return c.localAddr |
|
} |
|
|
|
func (c *splitConn) RemoteAddr() net.Addr { |
|
return c.remoteAddr |
|
} |
|
|
|
func (c *splitConn) SetDeadline(t time.Time) error { |
|
// TODO cannot do anything useful |
|
return nil |
|
} |
|
|
|
func (c *splitConn) SetReadDeadline(t time.Time) error { |
|
// TODO cannot do anything useful |
|
return nil |
|
} |
|
|
|
func (c *splitConn) SetWriteDeadline(t time.Time) error { |
|
// TODO cannot do anything useful |
|
return nil |
|
}
|
|
|