聊聊kingbus的respgo
序本文主要研究一下kingbus的resp.go writeOKkingbus/mysql/resp.go func (c *Conn) writeOK(r *gomysql.Result) error { if r == nil { r = &gomysql.Result{} } r.Status |= c.status data := make([]byte, 4, 32) data = append(data, gomysql.OK_HEADER) data = append(data, gomysql.PutLengthEncodedInt(r.AffectedRows)...) data = append(data, gomysql.PutLengthEncodedInt(r.InsertId)...) if c.capability&gomysql.CLIENT_PROTOCOL_41 > 0 { data = append(data, byte(r.Status), byte(r.Status>>8)) data = append(data, 0, 0) } return c.WritePacket(data)}writeOK方法写入gomysql.OK_HEADERwriteErrorkingbus/mysql/resp.go func (c *Conn) writeError(e error) error { var m *gomysql.MyError var ok bool if m, ok = e.(*gomysql.MyError); !ok { m = gomysql.NewError(gomysql.ER_UNKNOWN_ERROR, e.Error()) } data := make([]byte, 4, 16+len(m.Message)) data = append(data, gomysql.ERR_HEADER) data = append(data, byte(m.Code), byte(m.Code>>8)) if c.capability&gomysql.CLIENT_PROTOCOL_41 > 0 { data = append(data, '#') data = append(data, m.State...) } data = append(data, m.Message...) return c.WritePacket(data)}writeError方法写入gomysql.ERR_HEADERwriteEOFkingbus/mysql/resp.go ...