public static TopicMetadataRequest ReadFrom(ByteBuffer buffer) { var versonId = buffer.GetShort(); var correlationID = buffer.GetInt(); var clientId = ApiUtils.ReadShortString(buffer); var numTopic = ApiUtils.ReadIntInRange(buffer, "number of topics", Tuple.Create(0, int.MaxValue)); var topics = new List <string>(numTopic); for (var i = 0; i < numTopic; i++) { topics.Add(ApiUtils.ReadShortString(buffer)); } return(new TopicMetadataRequest(versonId, correlationID, clientId, topics)); }
internal static TopicMetadata ReadFrom(ByteBuffer buffer, Dictionary <int, Broker> brokers) { var errorCode = ApiUtils.ReadShortInRange(buffer, "error code", Tuple.Create((short)-1, short.MaxValue)); var topic = ApiUtils.ReadShortString(buffer); var numPartitions = ApiUtils.ReadIntInRange(buffer, "number of partitions", Tuple.Create(0, int.MaxValue)); var partitionsMetadata = new List <PartitionMetadata>(numPartitions); for (var i = 0; i < numPartitions; i++) { var partitionMetadata = PartitionMetadata.ReadFrom(buffer, brokers); partitionsMetadata.Add(partitionMetadata); } return(new TopicMetadata(topic, partitionsMetadata, errorCode)); }
public static PartitionMetadata ReadFrom(ByteBuffer buffer, Dictionary <int, Broker> brokers) { var errorCode = ApiUtils.ReadShortInRange( buffer, "error code", Tuple.Create <short, short>(-1, short.MaxValue)); var partitionId = ApiUtils.ReadIntInRange(buffer, "partition id", Tuple.Create(0, int.MaxValue)); // partition id var leaderId = buffer.GetInt(); var leader = brokers[leaderId]; // list of all replicas var numReplicas = ApiUtils.ReadIntInRange(buffer, "number of all replicas", Tuple.Create(0, int.MaxValue)); var replicaIds = Enumerable.Range(0, numReplicas).Select(_ => buffer.GetInt()).ToList(); var replicas = replicaIds.Select(x => brokers[x]).ToList(); // list of in-sync replicasd var numIsr = ApiUtils.ReadIntInRange(buffer, "number of in-sync replicas", Tuple.Create(0, int.MaxValue)); var isrIds = Enumerable.Range(0, numIsr).Select(_ => buffer.GetInt()).ToList(); var isr = isrIds.Select(x => brokers[x]).ToList(); return(new PartitionMetadata(partitionId, leader, replicas, isr, errorCode)); }