processData method
Process incoming raw data and extract complete messages
Implementation
List<ProcessingResult> processData(Uint8List data) {
final results = <ProcessingResult>[];
try {
// Add new data to buffer
_buffer.addAll(data);
_bytesProcessed += data.length;
// Process all available complete messages
while (_buffer.isNotEmpty) {
final result = _processNextMessage();
if (result.bytesConsumed > 0) {
// Remove consumed bytes from buffer
_buffer.removeRange(0, result.bytesConsumed);
}
if (result.hasMessage || result.hasError) {
results.add(result);
if (result.hasMessage) _messagesProcessed++;
if (result.hasError) _errors++;
}
// If no progress made, wait for more data
if (result.bytesConsumed == 0) break;
}
} catch (e, stackTrace) {
logger.severe('Fatal error processing data', e, stackTrace);
_state = ProcessingState.error;
_errors++;
results.add(ProcessingResult(
bytesConsumed: 0,
error: 'Fatal processing error: $e',
));
}
return results;
}