@@ -66,7 +66,7 @@ public struct KafkaConsumerMessage {
66
66
67
67
self . partition = KafkaPartition ( rawValue: Int ( rdKafkaMessage. partition) )
68
68
69
- self . headers = try Self . getHeaders ( for: messagePointer)
69
+ self . headers = try RDKafkaClient . getHeaders ( for: messagePointer)
70
70
71
71
if let keyPointer = rdKafkaMessage. key {
72
72
let keyBufferPointer = UnsafeRawBufferPointer (
@@ -91,82 +91,3 @@ extension KafkaConsumerMessage: Hashable {}
91
91
// MARK: - KafkaConsumerMessage + Sendable
92
92
93
93
extension 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