readFromBytes method
Implementation
void readFromBytes(Uint8List bytes) {
var start = 0;
if (definitionMessage == null) {
throw Exception('DefinitionMessage cannot be null.');
}
for (var fieldDefinition in definitionMessage!.fieldDefinitions) {
final field = getField(fieldDefinition.id);
if (field == null) {
logger.w(
'Field id: ${fieldDefinition.id} is not defined for message $name:$globalId.');
start += fieldDefinition.size;
continue;
}
if (field.isValid()) {
final fieldBytes =
Uint8List.sublistView(bytes, start, start + field.size);
var subField = field.getValidSubField(fields);
field.readAllFromBytes(fieldBytes, subField: subField, endian: endian);
start += field.size;
} else {
throw Exception('Field ${field.name} is empty');
}
}
for (var developerFieldDefinition
in definitionMessage!.developerFieldDefinitions) {
final field = getDeveloperField(
developerFieldDefinition.developerDataIndex,
developerFieldDefinition.id);
if (field == null) {
throw Exception(
'Developer Field id: ${developerFieldDefinition.developerDataIndex}:${developerFieldDefinition.id} is not defined for message $name:$globalId');
}
if (field.isValid()) {
final fieldBytes =
Uint8List.sublistView(bytes, start, start + field.size);
var subField = field.getValidSubField(fields);
field.readAllFromBytes(fieldBytes, subField: subField, endian: endian);
start += field.size;
} else {
throw Exception('Developer Field ${field.name} is empty');
}
}
}