encodeGeneric function

Uint8List encodeGeneric(
  1. MessageModel model,
  2. GenericMessage message,
  3. FileModel file
)

Implementation

Uint8List encodeGeneric(
    MessageModel model, GenericMessage message, FileModel file) {
  final out = BytesBuilder();
  final numbers = message.values.keys.toList()..sort();
  for (final number in numbers) {
    final field = model.fields[number];
    if (field == null) {
      throw StatusException(Wire.codeInvalidArgument,
          'unknown field $number for ${model.fullName}');
    }
    final values = message.values[number]!;
    if (field.repeated) {
      for (final value in values) {
        _encodeValue(out, field, value, file);
      }
    } else if (values.isNotEmpty) {
      _encodeValue(out, field, values[0], file);
    }
  }
  for (final chunk in message.unknown) {
    out.add(chunk);
  }
  return out.toBytes();
}