ReadArrayHeader reads the next object as an array header and returns the size of the array and the number of bytes read.
()
| 535 | // array header and returns the size of the array |
| 536 | // and the number of bytes read. |
| 537 | func (m *Reader) ReadArrayHeader() (sz uint32, err error) { |
| 538 | lead, err := m.R.PeekByte() |
| 539 | if err != nil { |
| 540 | return |
| 541 | } |
| 542 | if isfixarray(lead) { |
| 543 | sz = uint32(rfixarray(lead)) |
| 544 | _, err = m.R.Skip(1) |
| 545 | return |
| 546 | } |
| 547 | var p []byte |
| 548 | switch lead { |
| 549 | case marray16: |
| 550 | p, err = m.R.Next(3) |
| 551 | if err != nil { |
| 552 | return |
| 553 | } |
| 554 | sz = uint32(big.Uint16(p[1:])) |
| 555 | return |
| 556 | |
| 557 | case marray32: |
| 558 | p, err = m.R.Next(5) |
| 559 | if err != nil { |
| 560 | return |
| 561 | } |
| 562 | sz = big.Uint32(p[1:]) |
| 563 | return |
| 564 | |
| 565 | default: |
| 566 | err = badPrefix(ArrayType, lead) |
| 567 | return |
| 568 | } |
| 569 | } |
| 570 | |
| 571 | // ReadNil reads a 'nil' MessagePack byte from the reader |
| 572 | func (m *Reader) ReadNil() error { |