private KafkaTopic TopicFromResponse(OffsetResponse offsetResponse) { string topicName = offsetResponse.Topics()[0]; int partitionId = offsetResponse.Partitions(topicName)[0]; short errorCode = offsetResponse.Errorcode(topicName, partitionId); if ( errorCode != 0) { if (errorCode == 3) throw new NoTopicException(topicName); throw new KafkaException(errorCode); } long offset = offsetResponse.Offsets(topicName, partitionId)[0]; var kafkaTopic = new KafkaTopic(topicName, partitionId, offset); return kafkaTopic; }
/// <summary> /// Get a list of valid offsets (up to maxSize) before the given time. /// </summary> /// <param name="request">The offset request.</param> /// <returns>List of offsets, in descending order.</returns> public OffsetResponse GetOffsetResponseBefore(OffsetRequest request) { using (var connection = new KafkaConnection(server, port)) { connection.Write(request.GetRequestBytes().ToArray()); int dataLength = BitConverter.ToInt32(BitWorks.ReverseBytes(connection.Read(4)), 0); if (dataLength == 0) return null; byte[] data = connection.Read(dataLength); var offsetResponse = new OffsetResponse(data); return offsetResponse; } }