clash/adapters/remote/direct.go

46 lines
794 B
Go
Raw Normal View History

2018-06-10 14:50:03 +00:00
package adapters
import (
"net"
C "github.com/Dreamacro/clash/constant"
)
// DirectAdapter is a directly connected adapter
type DirectAdapter struct {
conn net.Conn
}
// Close is used to close connection
func (d *DirectAdapter) Close() {
d.conn.Close()
}
2018-06-17 14:41:32 +00:00
// Conn is used to http request
2018-06-13 17:00:58 +00:00
func (d *DirectAdapter) Conn() net.Conn {
return d.conn
}
type Direct struct{}
2018-06-10 14:50:03 +00:00
2018-06-16 13:34:13 +00:00
func (d *Direct) Name() string {
return "Direct"
}
func (d *Direct) Type() C.AdapterType {
return C.Direct
}
2018-06-10 14:50:03 +00:00
func (d *Direct) Generator(addr *C.Addr) (adapter C.ProxyAdapter, err error) {
2018-06-11 10:36:39 +00:00
c, err := net.Dial("tcp", net.JoinHostPort(addr.String(), addr.Port))
2018-06-10 14:50:03 +00:00
if err != nil {
return
}
c.(*net.TCPConn).SetKeepAlive(true)
return &DirectAdapter{conn: c}, nil
2018-06-10 14:50:03 +00:00
}
func NewDirect() *Direct {
return &Direct{}
2018-06-10 14:50:03 +00:00
}