ReadBytesHeader reads the size header of a MessagePack 'bin' object. The user is responsible for dealing with the next 'sz' bytes from the reader in an application-specific way.
()
| 1075 | // 'sz' bytes from the reader in an application-specific |
| 1076 | // way. |
| 1077 | func (m *Reader) ReadBytesHeader() (sz uint32, err error) { |
| 1078 | var p []byte |
| 1079 | lead, err := m.R.PeekByte() |
| 1080 | if err != nil { |
| 1081 | return |
| 1082 | } |
| 1083 | switch lead { |
| 1084 | case mbin8: |
| 1085 | p, err = m.R.Next(2) |
| 1086 | if err != nil { |
| 1087 | return |
| 1088 | } |
| 1089 | sz = uint32(p[1]) |
| 1090 | return |
| 1091 | case mbin16: |
| 1092 | p, err = m.R.Next(3) |
| 1093 | if err != nil { |
| 1094 | return |
| 1095 | } |
| 1096 | sz = uint32(big.Uint16(p[1:])) |
| 1097 | return |
| 1098 | case mbin32: |
| 1099 | p, err = m.R.Next(5) |
| 1100 | if err != nil { |
| 1101 | return |
| 1102 | } |
| 1103 | sz = big.Uint32(p[1:]) |
| 1104 | return |
| 1105 | default: |
| 1106 | err = badPrefix(BinType, lead) |
| 1107 | return |
| 1108 | } |
| 1109 | } |
| 1110 | |
| 1111 | // ReadExactBytes reads a MessagePack 'bin'-encoded |
| 1112 | // object off of the wire into the provided slice. An |