readFromBytes method

void readFromBytes(
  1. Uint8List bytes
)

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