/// <inheritdoc /> public bool Equals(OffsetCommitRequest other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(base.Equals(other) && retention_time.Equals(other.retention_time) && topics.HasEqualElementsInOrder(other.topics)); }
private static byte[] EncodeRequest(IRequestContext context, OffsetCommitRequest request) { using (var writer = EncodeHeader(context, request)) { writer.Write(request.GroupId); if (context.ApiVersion >= 1) { writer.Write(request.GroupGenerationId) .Write(request.MemberId); } if (context.ApiVersion >= 2) { if (request.OffsetRetention.HasValue) { writer.Write((long)request.OffsetRetention.Value.TotalMilliseconds); } else { writer.Write(-1L); } } var topicGroups = request.Topics.GroupBy(x => x.TopicName).ToList(); writer.Write(topicGroups.Count); foreach (var topicGroup in topicGroups) { var partitions = topicGroup.GroupBy(x => x.PartitionId).ToList(); writer.Write(topicGroup.Key) .Write(partitions.Count); foreach (var partition in partitions) { foreach (var commit in partition) { writer.Write(partition.Key) .Write(commit.Offset); if (context.ApiVersion == 1) { writer.Write(commit.TimeStamp.GetValueOrDefault(-1)); } writer.Write(commit.Metadata); } } } return(writer.ToBytes()); } }