-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.go
40 lines (35 loc) · 894 Bytes
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package gtcp
import "net"
func getConn(addr string) (*net.TCPConn, error) {
tcpAddr, err := net.ResolveTCPAddr("tcp4", addr)
if err != nil {
return nil, err
}
conn, err := net.DialTCP("tcp", nil, tcpAddr)
if err != nil {
return nil, err
}
return conn, nil
}
// DialTCP: dial an address and return a TCPConn, maybe something wrong and return a err.
func DialTCP(addr string) (*TCPConn, error) {
conn, err := getConn(addr)
if err != nil {
conn.Close()
return nil, err
}
tcpConn := GetTCPConn(conn)
return tcpConn, nil
}
// DialTCPCtrl: dial an address and return a TCPCtrl, maybe something wrong and return err.
func DialTCPCtrl(addr string, actor Actor) (*TCPCtrl, error) {
conn, err := getConn(addr)
if err != nil {
conn.Close()
return nil, err
}
tcpConn := GetTCPConn(conn)
tcpCtrl := GetTCPCtrl(actor)
tcpCtrl.InstallTCPConn(tcpConn)
return tcpCtrl, err
}