decode method
Decode an endpoint name string back into structured metadata.
Returns null if the string is not a valid Airpass endpoint name (wrong magic prefix, too few fields, etc.).
Implementation
EndpointMetadata? decode(String endpointName) {
final parts = endpointName.split(kEndpointDelimiter);
// Need at least 5 fields: magic, version, role, groups, nodeIdPrefix
// Optionally 6 fields if a micro-message is present
if (parts.length < 5 || parts.length > 6) return null;
// Verify magic prefix
if (parts[0] != kEndpointMagic) return null;
final version = int.tryParse(parts[1]);
if (version == null) return null;
// Parse groups field: split by comma
final groupsRaw = parts[3];
final groupIds = groupsRaw == '*' ? <String>['*'] : groupsRaw.split(kGroupSeparator);
// Parse optional micro-message
final microMessage = parts.length == 6 ? parts[5] : null;
return EndpointMetadata(
protocolVersion: version,
role: NodeRole.fromCode(parts[2]),
groupIds: groupIds,
nodeIdPrefix: parts[4],
microMessage: microMessage,
);
}