packMapLength method

void packMapLength(
  1. int? length
)

Pack Map.length or null.

Implementation

void packMapLength(int? length) {
  // max 4 byte header + 1 control byte
  if (_buf.length - _offset < 5) _nextBuf();
  if (length == null) {
    _d.setUint8(_offset++, 0xc0);
  } else if (length <= 0xF) {
    _d.setUint8(_offset++, 0x80 | length);
  } else if (length <= 0xFFFF) {
    _d.setUint8(_offset++, 0xde);
    _d.setUint16(_offset, length);
    _offset += 2;
  } else if (length <= 0xFFFFFFFF) {
    _d.setUint8(_offset++, 0xdf);
    _d.setUint32(_offset, length);
    _offset += 4;
  } else {
    throw ArgumentError('Max map length is 0xFFFFFFFF');
  }
}