NewClientConn: create connection with customized server settings
(conn net.Conn, serverConf *Server, p CredentialProvider, hp Handler)
| 109 | |
| 110 | // NewClientConn: create connection with customized server settings |
| 111 | func NewClientConn(conn net.Conn, serverConf *Server, p CredentialProvider, hp Handler) (*Conn, error) { |
| 112 | var packetConn *packet.Conn |
| 113 | if serverConf.tlsConfig != nil { |
| 114 | packetConn = packet.NewTLSConn(conn) |
| 115 | } else { |
| 116 | packetConn = packet.NewConn(conn) |
| 117 | } |
| 118 | |
| 119 | salt, _ := RandomBuf(20) |
| 120 | c := &Conn{ |
| 121 | Conn: packetConn, |
| 122 | serverConf: serverConf, |
| 123 | h: hp, |
| 124 | credentialProvider: p, |
| 125 | connectionID: atomic.AddUint32(&baseConnID, 1), |
| 126 | stmts: make(map[uint32]*Stmt), |
| 127 | salt: salt, |
| 128 | } |
| 129 | c.closed.Set(false) |
| 130 | if err := c.handshake(); err != nil { |
| 131 | c.Close() |
| 132 | return nil, err |
| 133 | } |
| 134 | |
| 135 | return c, nil |
| 136 | } |
| 137 | |
| 138 | func (c *Conn) Handshake(hp Handler) error { |
| 139 | c.h = hp |