public static OffsetRequest ReadFrom(ByteBuffer buffer) { var versionId = buffer.GetShort(); var correlationId = buffer.GetInt(); var clientId = ApiUtils.ReadShortString(buffer); var replicaId = buffer.GetInt(); var topicCount = buffer.GetInt(); var pairs = Enumerable.Range(1, topicCount).SelectMany( _ => { var topic = ApiUtils.ReadShortString(buffer); var partitionCount = buffer.GetInt(); return(Enumerable.Range(1, partitionCount).Select(__ => { var partitionId = buffer.GetInt(); var time = buffer.GetLong(); var maxNumOffsets = buffer.GetInt(); return Tuple.Create( new TopicAndPartition(topic, partitionId), new PartitionOffsetRequestInfo(time, maxNumOffsets)); })); }); return(new OffsetRequest(pairs.ToDictionary(x => x.Item1, x => x.Item2), versionId: versionId, clientId: clientId, correlationId: correlationId, replicaId: replicaId)); }
public static FetchRequest ReadFrom(ByteBuffer buffer) { var versionId = buffer.GetShort(); var correlationId = buffer.GetInt(); var clientId = ApiUtils.ReadShortString(buffer); var replicaId = buffer.GetInt(); var maxWait = buffer.GetInt(); var minBytes = buffer.GetInt(); var topicCount = buffer.GetInt(); var pairs = Enumerable.Range(1, topicCount).SelectMany(_ => { var topic = ApiUtils.ReadShortString(buffer); var partitionCount = buffer.GetInt(); return(Enumerable.Range(1, partitionCount).Select(__ => { var partitionId = buffer.GetInt(); var offset = buffer.GetLong(); var fetchSize = buffer.GetInt(); return Tuple.Create( new TopicAndPartition(topic, partitionId), new PartitionFetchInfo(offset, fetchSize)); })); }); return(new FetchRequest(versionId, correlationId, clientId, replicaId, maxWait, minBytes, pairs.ToDictionary(x => x.Item1, x => x.Item2))); }
public static ProducerRequest ReadFrom(ByteBuffer buffer) { var versionId = buffer.GetShort(); var correlationId = buffer.GetInt(); var clientId = ApiUtils.ReadShortString(buffer); var requiredAcks = buffer.GetShort(); var ackTimeoutMs = buffer.GetInt(); // built the topic structure var topicCount = buffer.GetInt(); var partitionDataPairs = Enumerable.Range(1, topicCount).SelectMany(_ => { // process topic var topic = ApiUtils.ReadShortString(buffer); var partitionCount = buffer.GetInt(); return(Enumerable.Range(1, partitionCount).Select(__ => { var partition = buffer.GetInt(); var messagesSetSize = buffer.GetInt(); var messageSetBuffer = new byte[messagesSetSize]; buffer.Get(messageSetBuffer, 0, messagesSetSize); return Tuple.Create( new TopicAndPartition(topic, partition), new ByteBufferMessageSet(ByteBuffer.Wrap(messageSetBuffer))); })); }); return(new ProducerRequest(versionId, correlationId, clientId, requiredAcks, ackTimeoutMs, partitionDataPairs.ToDictionary(k => k.Item1, v => v.Item2))); }
public static TopicData ReadFrom(ByteBuffer buffer) { var topic = ApiUtils.ReadShortString(buffer); var partitionCount = buffer.GetInt(); var topicPartitionDataPairs = Enumerable.Range(1, partitionCount).Select( _ => { var partitonId = buffer.GetInt(); var partitionData = FetchResponsePartitionData.ReadFrom(buffer); return(Tuple.Create(partitonId, partitionData)); }).ToList(); return(new TopicData(topic, topicPartitionDataPairs.ToDictionary(k => k.Item1, v => v.Item2))); }
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 ProducerResponse ReadFrom(ByteBuffer buffer) { var correlationId = buffer.GetInt(); var topicCount = buffer.GetInt(); var statusPairs = Enumerable.Range(0, topicCount).SelectMany( _ => { var topic = ApiUtils.ReadShortString(buffer); var partitionCount = buffer.GetInt(); return(Enumerable.Range(0, partitionCount).Select( __ => { var partition = buffer.GetInt(); var error = buffer.GetShort(); var offset = buffer.GetLong(); return new KeyValuePair <TopicAndPartition, ProducerResponseStatus>( new TopicAndPartition(topic, partition), new ProducerResponseStatus(error, offset)); })); }); return(new ProducerResponse(statusPairs.ToDictionary(x => x.Key, x => x.Value), correlationId)); }
public static OffsetResponse ReadFrom(ByteBuffer buffer) { var correlationId = buffer.GetInt(); var numTopics = buffer.GetInt(); var pairs = Enumerable.Range(1, numTopics).SelectMany(_ => { var topic = ApiUtils.ReadShortString(buffer); var numPartitions = buffer.GetInt(); return(Enumerable.Range(1, numPartitions).Select(__ => { var partiton = buffer.GetInt(); var error = buffer.GetShort(); var numOffsets = buffer.GetInt(); var offsets = Enumerable.Range(1, numOffsets).Select(o => buffer.GetLong()).ToList(); return new KeyValuePair <TopicAndPartition, PartitionOffsetsResponse>( new TopicAndPartition(topic, partiton), new PartitionOffsetsResponse(error, offsets)); })); }); return(new OffsetResponse(correlationId, pairs.ToDictionary(kvp => kvp.Key, kvp => kvp.Value))); }