| 322 | } |
| 323 | |
| 324 | func DecodeMysqlGTIDSet(data []byte) (*MysqlGTIDSet, error) { |
| 325 | s := new(MysqlGTIDSet) |
| 326 | |
| 327 | if len(data) < 8 { |
| 328 | return nil, errors.Errorf("invalid gtid set buffer, less 4") |
| 329 | } |
| 330 | |
| 331 | n := int(binary.LittleEndian.Uint64(data)) |
| 332 | s.Sets = make(map[string]*UUIDSet, n) |
| 333 | |
| 334 | pos := 8 |
| 335 | |
| 336 | for i := 0; i < n; i++ { |
| 337 | set := new(UUIDSet) |
| 338 | if n, err := set.decode(data[pos:]); err != nil { |
| 339 | return nil, errors.Trace(err) |
| 340 | } else { |
| 341 | pos += n |
| 342 | |
| 343 | s.AddSet(set) |
| 344 | } |
| 345 | } |
| 346 | return s, nil |
| 347 | } |
| 348 | |
| 349 | func (s *MysqlGTIDSet) AddSet(set *UUIDSet) { |
| 350 | if set == nil { |