@@ -66,7 +66,7 @@ public struct KafkaConsumerMessage {
6666
6767 self . partition = KafkaPartition ( rawValue: Int ( rdKafkaMessage. partition) )
6868
69- self . headers = try Self . getHeaders ( for: messagePointer)
69+ self . headers = try RDKafkaClient . getHeaders ( for: messagePointer)
7070
7171 if let keyPointer = rdKafkaMessage. key {
7272 let keyBufferPointer = UnsafeRawBufferPointer (
@@ -91,82 +91,3 @@ extension KafkaConsumerMessage: Hashable {}
9191// MARK: - KafkaConsumerMessage + Sendable
9292
9393extension KafkaConsumerMessage : Sendable { }
94-
95- // MARK: - Helpers
96-
97- extension KafkaConsumerMessage {
98- /// Extract ``KafkaHeader``s from a `rd_kafka_message_t` pointer.
99- ///
100- /// - Parameters:
101- /// - for: Pointer to the `rd_kafka_message_t` object to extract the headers from.
102- private static func getHeaders(
103- for messagePointer: UnsafePointer < rd_kafka_message_t >
104- ) throws -> [ KafkaHeader ] {
105- var result : [ KafkaHeader ] = [ ]
106- var headers : OpaquePointer ?
107-
108- var readStatus = rd_kafka_message_headers ( messagePointer, & headers)
109-
110- if readStatus == RD_KAFKA_RESP_ERR__NOENT {
111- // No Header Entries
112- return result
113- }
114-
115- guard readStatus == RD_KAFKA_RESP_ERR_NO_ERROR else {
116- throw KafkaError . rdKafkaError ( wrapping: readStatus)
117- }
118-
119- guard let headers else {
120- return result
121- }
122-
123- let headerCount = rd_kafka_header_cnt ( headers)
124- result. reserveCapacity ( headerCount)
125-
126- var headerIndex = 0
127-
128- while readStatus != RD_KAFKA_RESP_ERR__NOENT && headerIndex < headerCount {
129- var headerKeyPointer : UnsafePointer < CChar > ?
130- var headerValuePointer : UnsafeRawPointer ?
131- var headerValueSize = 0
132-
133- readStatus = rd_kafka_header_get_all (
134- headers,
135- headerIndex,
136- & headerKeyPointer,
137- & headerValuePointer,
138- & headerValueSize
139- )
140-
141- if readStatus == RD_KAFKA_RESP_ERR__NOENT {
142- // No Header Entries
143- return result
144- }
145-
146- guard readStatus == RD_KAFKA_RESP_ERR_NO_ERROR else {
147- throw KafkaError . rdKafkaError ( wrapping: readStatus)
148- }
149-
150- guard let headerKeyPointer else {
151- fatalError ( " Found null pointer when reading KafkaConsumerMessage header key " )
152- }
153- let headerKey = String ( cString: headerKeyPointer)
154-
155- var headerValue : ByteBuffer ?
156- if let headerValuePointer, headerValueSize > 0 {
157- let headerValueBufferPointer = UnsafeRawBufferPointer (
158- start: headerValuePointer,
159- count: headerValueSize
160- )
161- headerValue = ByteBuffer ( bytes: headerValueBufferPointer)
162- }
163-
164- let newHeader = KafkaHeader ( key: headerKey, value: headerValue)
165- result. append ( newHeader)
166-
167- headerIndex += 1
168- }
169-
170- return result
171- }
172- }
0 commit comments