public static Broker FromStream(ReadByteStream stream) { return new Broker { BrokerId = stream.ReadInt(), Host = stream.ReadInt16String(), Port = stream.ReadInt() }; }
public static Partition FromStream(ReadByteStream stream) { var partition = new Partition { ErrorCode = stream.ReadInt16(), PartitionId = stream.ReadInt(), LeaderId = stream.ReadInt(), Replicas = new List<int>(), Isrs = new List<int>() }; var numReplicas = stream.ReadInt(); for (int i = 0; i < numReplicas; i++) { partition.Replicas.Add(stream.ReadInt()); } var numIsr = stream.ReadInt(); for (int i = 0; i < numIsr; i++) { partition.Isrs.Add(stream.ReadInt()); } return partition; }
public static Topic FromStream(ReadByteStream stream) { var topic = new Topic { ErrorCode = stream.ReadInt16(), Name = stream.ReadInt16String(), Partitions = new List<Partition>() }; var numPartitions = stream.ReadInt(); for (int i = 0; i < numPartitions; i++) { topic.Partitions.Add(Partition.FromStream(stream)); } return topic; }
/// <summary> /// Decode a byte[] that represents a collection of messages. /// </summary> /// <param name="messageSet">The byte[] encode as a message set from kafka.</param> /// <returns>Enumerable representing stream of messages decoded from byte[]</returns> public static IEnumerable<Message> DecodeMessageSet(byte[] messageSet) { var stream = new ReadByteStream(messageSet); while (stream.HasData) { var offset = stream.ReadLong(); var size = stream.ReadInt(); var payload = stream.ReadBytesFromStream(size); if (payload.Length < size) throw new InsufficientDataException(payload.Length, size); foreach (var message in DecodeMessage(offset, payload)) { yield return message; } } }