toBytes method

  1. @override
List<int> toBytes()
override

Implementation

@override
List<int> toBytes() {
  var builder = new KafkaBytesBuilder.withRequestHeader(apiKey, apiVersion, correlationId);

  // TODO: replace groupBy with ListMultimap
  // ignore: STRONG_MODE_DOWN_CAST_COMPOSITE
  Map<String, List<ConsumerOffset>> groupedByTopic = groupBy(offsets, (o) => o.topicName);
  var timestamp = DateTime.now().millisecondsSinceEpoch;
  builder.addString(consumerGroup);
  builder.addInt32(consumerGroupGenerationId);
  builder.addString(consumerId);
  builder.addInt32(groupedByTopic.length);
  groupedByTopic.forEach((topicName, partitionOffsets) {
    builder.addString(topicName);
    builder.addInt32(partitionOffsets.length);
    partitionOffsets.forEach((p) {
      builder.addInt32(p.partitionId);
      builder.addInt64(p.offset);
      builder.addInt64(timestamp);
      builder.addString(p.metadata);
    });
  });

  var body = builder.takeBytes();
  builder.addBytes(body);

  return builder.takeBytes();
}