func (self *QueryResult) decodeFieldsBson(buf *bytes.Buffer, kind byte) []mysql.Field { switch kind { case bson.Array: // valid case bson.Null: return nil default: panic(bson.NewBsonError("Unexpected data type %v for Query.Fields", kind)) } bson.Next(buf, 4) fields := make([]mysql.Field, 0, 8) kind = bson.NextByte(buf) for i := 0; kind != bson.EOO; i++ { if kind != bson.Object { panic(bson.NewBsonError("Unexpected data type %v for Query.Field", kind)) } bson.ExpectIndex(buf, i) var field mysql.Field UnmarshalFieldBson(&field, buf) fields = append(fields, field) kind = bson.NextByte(buf) } return fields }
func (self *RequestBson) UnmarshalBson(buf *bytes.Buffer) { bson.Next(buf, 4) kind := bson.NextByte(buf) for kind != bson.EOO { key := bson.ReadCString(buf) switch key { case "ServiceMethod": self.ServiceMethod = bson.DecodeString(buf, kind) case "Seq": self.Seq = bson.DecodeUint64(buf, kind) default: panic(bson.NewBsonError("Unrecognized tag %s", key)) } kind = bson.NextByte(buf) } }
func UnmarshalFieldBson(self *mysql.Field, buf *bytes.Buffer) { bson.Next(buf, 4) kind := bson.NextByte(buf) for kind != bson.EOO { key := bson.ReadCString(buf) switch key { case "Name": self.Name = bson.DecodeString(buf, kind) case "Type": self.Type = bson.DecodeInt64(buf, kind) default: panic(bson.NewBsonError("Unrecognized tag %s", key)) } kind = bson.NextByte(buf) } }
func (self *Session) UnmarshalBson(buf *bytes.Buffer) { bson.Next(buf, 4) kind := bson.NextByte(buf) for kind != bson.EOO { key := bson.ReadCString(buf) switch key { case "TransactionId": self.TransactionId = bson.DecodeInt64(buf, kind) case "ConnectionId": self.ConnectionId = bson.DecodeInt64(buf, kind) case "SessionId": self.SessionId = bson.DecodeInt64(buf, kind) default: panic(bson.NewBsonError("Unrecognized tag %s", key)) } kind = bson.NextByte(buf) } }
func (self *QueryResult) decodeRowsBson(buf *bytes.Buffer, kind byte) [][]interface{} { switch kind { case bson.Array: // valid case bson.Null: return nil default: panic(bson.NewBsonError("Unexpected data type %v for Query.Rows", kind)) } bson.Next(buf, 4) rows := make([][]interface{}, 0, 8) kind = bson.NextByte(buf) for i := 0; kind != bson.EOO; i++ { bson.ExpectIndex(buf, i) rows = append(rows, self.decodeRowBson(buf, kind)) kind = bson.NextByte(buf) } return rows }
func (self *QueryResult) UnmarshalBson(buf *bytes.Buffer) { bson.Next(buf, 4) kind := bson.NextByte(buf) for kind != bson.EOO { key := bson.ReadCString(buf) switch key { case "Fields": self.Fields = self.decodeFieldsBson(buf, kind) case "RowsAffected": self.RowsAffected = bson.DecodeUint64(buf, kind) case "InsertId": self.InsertId = bson.DecodeUint64(buf, kind) case "Rows": self.Rows = self.decodeRowsBson(buf, kind) default: panic(bson.NewBsonError("Unrecognized tag %s", key)) } kind = bson.NextByte(buf) } }