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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }