packBinary method

void packBinary(
  1. List<int>? buffer
)

Pack List<int> or null.

Implementation

void packBinary(List<int>? buffer) {
  // max 4 byte binary header + 1 control byte
  if (_buf.length - _offset < 5) _nextBuf();
  if (buffer == null) {
    _d.setUint8(_offset++, 0xc0);
    return;
  }
  final length = buffer.length;
  if (length <= 0xFF) {
    _d.setUint8(_offset++, 0xc4);
    _d.setUint8(_offset++, length);
  } else if (length <= 0xFFFF) {
    _d.setUint8(_offset++, 0xc5);
    _d.setUint16(_offset, length);
    _offset += 2;
  } else if (length <= 0xFFFFFFFF) {
    _d.setUint8(_offset++, 0xc6);
    _d.setUint32(_offset, length);
    _offset += 4;
  } else {
    throw ArgumentError('Max binary length is 0xFFFFFFFF');
  }
  _putBytes(buffer);
}