func handleBType(temp string, msg proxy.Pkg) msgStruct { msgs <- fmt.Sprintf("3 received ---->%#v\n", msg) msgs <- fmt.Sprintf("3 temp ---->%#v\n", temp) msgs <- fmt.Sprintf("3 len(msg.Content) ---->%#v\n", len(msg.Content)) // if msg.Type == byte('B') && temp != "" && len(msg.Content) > 23 { msgs <- fmt.Sprintf("4 received ---->%#v\n", msg) var newMsg proxy.ReadBuf newMsg = msg.Content msgs <- fmt.Sprintf("5 received ---->%#v\n", msg) // The name of the destination portal (an empty string selects the unnamed portal). p := bytes.Index(newMsg, []byte{0}) // remove first string msgs <- fmt.Sprintf("msg ---->%#v\n", newMsg) msgs <- fmt.Sprintf("first string ---->%#v\n", newMsg[:p+1]) newMsg = newMsg[p+1:] msgs <- fmt.Sprintf("0 newMsg ----->%#v\n", newMsg) if newMsg[0] == 0 { p := bytes.Index(newMsg, []byte{0}) // remove first string msgs <- fmt.Sprintf("msg ---->%#v\n", newMsg) msgs <- fmt.Sprintf("1.1 first string ---->%#v\n", newMsg[:p+1]) newMsg = newMsg[p:] msgs <- fmt.Sprintf("0.1 newMsg ----->%#v\n", newMsg) } // The name of the source prepared statement (an empty string selects the unnamed prepared statement). p = bytes.Index(newMsg, []byte{0}) // remove second string msgs <- fmt.Sprintf("second string ---->%#v\n", newMsg[:p+1]) newMsg = newMsg[p+1:] msgs <- fmt.Sprintf("1 newMsg ----->%#v\n", newMsg) totalVar := newMsg.Int16() msgs <- fmt.Sprintf("vars types numbers ---->%#v\n", totalVar) // read variables' types for t1 := 0; t1 < totalVar; t1++ { varType := newMsg.Int16() msgs <- fmt.Sprintf("var #%d typeId----->%#v\n", t1+1, varType) } msgs <- fmt.Sprintf("23 newMsg ----->%#v\n", newMsg) msgs <- fmt.Sprintf("23 t ----->%#v\n", totalVar) // var total newMsg.Int16() vars := make(map[int]string) var varsIdx []int // if (totalVar == 0 && len(newMsg) > 4) || totalVar > len(newMsg) { // msgs <- fmt.Sprintf("23.1 newMsg ----->%#v\n", newMsg) // msgs <- fmt.Sprintf("0 totalVar ----->%d\n", totalVar) // for totalVar := 0; totalVar != 0 && totalVar < len(newMsg); totalVar = newMsg.Int16() { // msgs <- fmt.Sprintf("24 newMsg ----->%#v\n", newMsg) // msgs <- fmt.Sprintf("1 totalVar ----->%d\n", totalVar) // } // } // // if totalVar == 0 && len(newMsg) > 4 { // totalVar = newMsg.Int16() // } // if totalVar == 0 && len(newMsg) > 4 { // totalVar = newMsg.Int32() // } msgs <- fmt.Sprintf("totalVar ----->%d\n", totalVar) for i := 0; i < totalVar; i++ { msgs <- fmt.Sprintf("2 newMsg ----->%#v\n", newMsg) varLen := newMsg.Int32() // var1 := newMsg.Next(4) // // log.Debug("aa -----> %#v\n", aa) // // log.Debug("aa bits ----->%8b\n", aa[len(aa)-1]) // varLen := int(binary.BigEndian.Uint32(var1)) // if varLen > len(newMsg) { // varLen = int(binary.BigEndian.Uint16(var1[:2])) // } if varLen > 0 { msgs <- fmt.Sprintf("varLen ----->%v\n", varLen) msgs <- fmt.Sprintf("newMsg ----->%#v\n", newMsg) if varLen > len(newMsg) { varLen = len(newMsg) - 4 msgs <- fmt.Sprintf("1 varLen ----->%v\n", varLen) msgs <- fmt.Sprintf("1 newMsg ----->%#v\n", newMsg) } vars[i] = string(newMsg.Next(varLen)) msgs <- fmt.Sprintf("vars ----->%#v\n", vars) varsIdx = append(varsIdx, i) msgs <- fmt.Sprintf("varIdx ----->%#v\n", varsIdx) } } sort.Sort(sort.Reverse(sort.IntSlice(varsIdx))) for _, k := range varsIdx { // messages = append(messages, strings.Replace(temp, fmt.Sprintf("$%d", k+1), fmt.Sprintf("'%s'", string(newMsg[k+1])), -1)) temp = strings.Replace(temp, fmt.Sprintf("$%d", k+1), fmt.Sprintf("'%s'", string(vars[k])), -1) msgs <- fmt.Sprintf("message subst k ----->%v\n", k) msgs <- fmt.Sprintf("message subst newMsg ----->%#v\n", newMsg) msgs <- fmt.Sprintf("message subst msg ----->%v\n", vars[k+1]) msgs <- fmt.Sprintf("message subst temp ----->%v\n", temp) msgs <- fmt.Sprintf("message subst param %s ----->%v\n", fmt.Sprintf("$%d", k+1), fmt.Sprintf("'%s'", vars[k])) } msgs <- fmt.Sprintf("end message ----->%v\n", temp) // msgOut <- msgStruct{Type: "M", Content: temp} // } else { // } return msgStruct{Type: "M", Content: temp, Time: msg.Time} }