/**
* @Author  : zou.yingbin
* @Create  : 2022/3/23 11:05
* @Modify  : 2022/3/23 11:05
* @note    :
 */

package client

type wareInfo struct {
	buf       []byte // 内容[报价开始(0x10)：报价结束(0x11)]
	exchId    string // 交易所id
	goodsCode string // 商品代码
	ask       string // 卖价
	bid       string // 买价
	last      string // 最新价
	tm        string // 时间
}

func (r *wareInfo) getField(tag byte) string {
	for i, v := range r.buf {
		if v == tag {
			if i > 0 && r.buf[i-1] == 0x01 {
				for j, d := range r.buf[i:] {
					if d == 0x01 || d == 0x11 {
						buf := r.buf[i+2 : i+j]
						return string(buf)
					}
				}
			}
		}
	}
	return ""
}

func (r *wareInfo) parseField() {
	r.goodsCode = r.getField(0x21)
	r.ask = r.getField(0x4c)
	r.bid = r.getField(0x42)
	r.last = r.getField(0x24)
	r.tm = r.getField(0x41)
	r.exchId = r.getField(0x56)
	if r.exchId == "200" {
		r.goodsCode = "200"
	}
}

// func (r *wareInfo) printInfo() {
// 	if r.ask == "" {
// 		return
// 	}
// 	log.Println(r.exchId, r.goodsCode, r.ask, r.bid, r.last, r.tm)
// }

// func (r *wareInfo) debugPrintAllField() {
// 	if len(r.buf) <= 2 {
// 		return
// 	}
// 	if r.buf[0] != 0x10 || r.buf[len(r.buf)-1] != 0x11 {
// 		return
// 	}
// 	type Field struct {
// 		Tag   byte
// 		Value string
// 	}
// 	var sField []Field
// 	tmp := string(r.buf[2 : len(r.buf)-1])
// 	//0x01 字段分割
// 	strS := strings.Split(tmp, string([]byte{0x01}))
// 	for _, v := range strS {
// 		//0x02 值分割
// 		split := strings.Split(v, string([]byte{0x02}))
// 		if len(split) != 2 {
// 			break
// 		}
// 		d := Field{
// 			Tag:   ([]byte(split[0]))[0],
// 			Value: split[1],
// 		}
// 		sField = append(sField, d)
// 	}
// 	for _, v := range sField {
// 		log.Printf("0x%0x %s\n", v.Tag, v.Value)
// 	}
// }
