encodedLength method

int encodedLength({
  1. required String nodeId,
  2. required NodeRole role,
  3. List<String>? groupIds,
  4. String? microMessage,
})

Calculates the encoded byte length WITHOUT actually throwing. Useful for validation before committing to a group subscription.

Implementation

int encodedLength({
  required String nodeId,
  required NodeRole role,
  List<String>? groupIds,
  String? microMessage,
}) {
  final prefix = nodeId.length >= 8 ? nodeId.substring(0, 8) : nodeId;
  final groupsField = (groupIds != null && groupIds.isNotEmpty)
      ? groupIds.join(kGroupSeparator)
      : '*';

  final parts = [
    kEndpointMagic,
    kAirpassProtocolVersion.toString(),
    role.code,
    groupsField,
    prefix,
  ];
  if (microMessage != null && microMessage.isNotEmpty) {
    parts.add(microMessage);
  }
  return utf8.encode(parts.join(kEndpointDelimiter)).length;
}