receivePart method
Process a UR part for multi-part decoding Returns true if this part was useful
Implementation
bool receivePart(String ur) {
final part = decodeSingle(ur);
// Initialize type from first part
_expectedType ??= part.type;
// Validate type consistency
if (part.type != _expectedType) {
throw ArgumentError(
'Type mismatch: expected $_expectedType, got ${part.type}');
}
// Handle single-part message
if (part.isSinglePart) {
_fountainDecoder = FountainDecoder(part.data.length);
final fountainPart = FountainPart(
sequenceNumber: 0,
fragmentCount: 1,
fragmentIndexes: [0],
data: part.data,
);
return _fountainDecoder!.receivePart(fountainPart);
}
// Initialize fountain decoder if needed
_fountainDecoder ??= FountainDecoder(part.data.length);
// Convert to fountain part (sequence numbers are 0-based internally)
final fountainPart = FountainPart(
sequenceNumber: part.sequenceNumber - 1,
fragmentCount: part.totalParts,
fragmentIndexes: [part.sequenceNumber - 1], // Simple mapping for now
data: part.data,
);
return _fountainDecoder!.receivePart(fountainPart);
}