receivePart method

bool receivePart(
  1. String ur
)

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);
}