123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package xugu
- import (
- "context"
- "errors"
- "fmt"
- )
- func xgSockOpenConn(ctx context.Context, pConn *xuguConn) error {
- fmt.Println(" ---xgSockOpenConn(ctx context.Context, pConn *xuguConn)")
-
-
-
- dsnMessage := generateLoginString(pConn.dsnConfig)
- _, err := pConn.conn.Write([]byte(dsnMessage))
- if err != nil {
- return errors.New("conn 发送数据库连接失败:")
- }
- fmt.Println("数据已发送:", dsnMessage)
- buffer := make([]byte, 1)
- n, err := pConn.conn.Read(buffer)
- if err != nil {
- return errors.New("conn 接收数据库连接相应失败:")
- }
- fmt.Println("读取数据库服务返回:", string(buffer[:n]))
-
- return nil
- }
- func parseMsg(readBuf *buffer, pConn *xuguConn) (rs *xuguResult, err error) {
- result := &xuguResult{
- affectedRows: 0,
- insertId: 0,
- }
- for {
- char := readBuf.peekChar()
- fmt.Println("parseMsg 内的 peekChar: ", char, "-", string(char))
- switch char {
- case 'K':
- fmt.Println("消息类型为K")
-
-
- readBuf.buf = make([]byte, 2048)
- readBuf.idx = 0
- return result, nil
- case '$':
- readBuf.idx++
- fmt.Println("消息类型为$")
- parseFormArgDescri(readBuf)
- case 'A':
- readBuf.idx++
- fmt.Println("消息类型为A")
- parseSelectResult(readBuf)
- case 'I':
- readBuf.idx++
- fmt.Println("消息类型为I")
- parseInsertResult(readBuf)
- case 'U':
- fmt.Println("消息类型为U")
- readBuf.idx++
- parseUpdateResult(readBuf)
- case 'D':
- fmt.Println("消息类型为D")
- readBuf.idx++
- parseDeleteResult(readBuf)
- case 'E':
- fmt.Println("消息类型为E")
- readBuf.idx++
- pErr, err := parseErrInfo(readBuf)
- if err != nil {
- return nil, err
- }
-
-
- pConn.errStr = pErr.ErrStr
-
-
- case 'W':
- fmt.Println("消息类型为W")
- readBuf.idx++
- parseWarnInfo(readBuf)
- case 'M':
- fmt.Println("消息类型为M")
- readBuf.idx++
- parseMessage(readBuf)
- default:
- fmt.Println("消息类型为其他")
- return nil, errors.New("parseMsg: unknown message type")
- }
- }
- }
- func xuguSockRecvMsg(pConn *xuguConn) (rs *xuguResult, err error) {
- pConn.conn.Read(pConn.readBuff.buf)
- fmt.Println("pConn.readBuff.buf ::", pConn.readBuff.buf, string(pConn.readBuff.buf))
- rs, err = parseMsg(&pConn.readBuff, pConn)
- if err != nil {
- fmt.Println("xuguPrepare parseMsg(&pConn.readBuff, pConn)")
- return nil, err
- }
- return rs, nil
- }
|