encodedLength method
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;
}