123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package xugu
- import (
- "bufio"
- )
- // ----------------------------------------------------------------------------------------------------
- type SrvResponse struct {
- FormArgDescri []*FormArgDescri
- SelectResult []*SelectResult
- InsertResult []*InsertResult
- UpdateResult []*UpdateResult
- DeleteResult []*DeleteResult
- ProcRet []*ProcRet
- OutParamRet []*OutParamRet
- ErrInfo []*ErrInfo
- WarnInfo []*WarnInfo
- Message []*Message
- }
- // func parseResponse(conn net.Conn) (*SrvResponse, error) {
- // response := &SrvResponse{}
- // reader := bufio.NewReader(conn)
- // for {
- // msgType, err := reader.ReadByte()
- // if err != nil {
- // return nil, err
- // }
- // switch msgType {
- // case '$':
- // argDescri, err := parseFormArgDescri(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.FormArgDescri = append(response.FormArgDescri, argDescri)
- // case 'I':
- // insertResult, err := parseInsertResult(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.InsertResult = append(response.InsertResult, insertResult)
- // case 'U':
- // updateResult, err := parseUpdateResult(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.UpdateResult = append(response.UpdateResult, updateResult)
- // case 'D':
- // deleteResult, err := parseDeleteResult(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.DeleteResult = append(response.DeleteResult, deleteResult)
- // case 'O':
- // procRet, err := parseProcRet(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.ProcRet = append(response.ProcRet, procRet)
- // case 'P':
- // outParamRet, err := parseOutParamRet(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.OutParamRet = append(response.OutParamRet, outParamRet)
- // case 'E':
- // errInfo, err := parseErrInfo(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.ErrInfo = append(response.ErrInfo, errInfo)
- // case 'W':
- // warnInfo, err := parseWarnInfo(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.WarnInfo = append(response.WarnInfo, warnInfo)
- // case 'M':
- // message, err := parseMessage(reader)
- // if err != nil {
- // return nil, err
- // }
- // response.Message = append(response.Message, message)
- // case 'K':
- // return response, nil
- // default:
- // return nil, fmt.Errorf("未知的消息类型: %v", msgType)
- // }
- // }
- // }
- // 解析函数的实现,例如 parseFormArgDescri 等
- func readString(reader *bufio.Reader, length int) (string, error) {
- bytes := make([]byte, length)
- _, err := reader.Read(bytes)
- return string(bytes), err
- }
- func parseFieldDescri(reader *bufio.Reader) (FieldDescri, error) {
- fieldDescri := FieldDescri{}
- var err error
- fieldDescri.FieldNameLen, err = readInt32(reader)
- if err != nil {
- return fieldDescri, err
- }
- fieldDescri.FieldName, err = readString(reader, fieldDescri.FieldNameLen)
- if err != nil {
- return fieldDescri, err
- }
- // fieldDescri.FieldType, err = fieldType(reader)
- // if err != nil {
- // return fieldDescri, err
- // }
- fieldDescri.FieldPreciScale, err = readInt32(reader)
- if err != nil {
- return fieldDescri, err
- }
- fieldDescri.FieldFlag, err = readInt32(reader)
- if err != nil {
- return fieldDescri, err
- }
- return fieldDescri, nil
- }
|