@@ -208,15 +208,9 @@ cdef class _DesSingleParamType(_DesParameterizedType):
208208
209209cdef class DesListType(_DesSingleParamType):
210210 cdef deserialize(self , Buffer * buf, int protocol_version):
211- cdef uint16_t v2_and_below = 2
212- cdef int32_t v3_and_above = 3
213211
214- if protocol_version >= 3 :
215- result = _deserialize_list_or_set[int32_t](
216- v3_and_above, buf, protocol_version, self .deserializer)
217- else :
218- result = _deserialize_list_or_set[uint16_t](
219- v2_and_below, buf, protocol_version, self .deserializer)
212+ result = _deserialize_list_or_set(
213+ buf, protocol_version, self .deserializer)
220214
221215 return result
222216
@@ -225,60 +219,49 @@ cdef class DesSetType(DesListType):
225219 return util.sortedset(DesListType.deserialize(self , buf, protocol_version))
226220
227221
228- ctypedef fused itemlen_t:
229- uint16_t # protocol <= v2
230- int32_t # protocol >= v3
231-
232- cdef list _deserialize_list_or_set(itemlen_t dummy_version,
233- Buffer * buf, int protocol_version,
222+ cdef list _deserialize_list_or_set(Buffer * buf, int protocol_version,
234223 Deserializer deserializer):
235224 """
236225 Deserialize a list or set.
237-
238- The 'dummy' parameter is needed to make fused types work, so that
239- we can specialize on the protocol version.
240226 """
241227 cdef Buffer itemlen_buf
242228 cdef Buffer elem_buf
243229
244- cdef itemlen_t numelements
230+ cdef int32_t numelements
245231 cdef int offset
246232 cdef list result = []
247233
248- _unpack_len[itemlen_t ](buf, 0 , & numelements)
249- offset = sizeof(itemlen_t )
234+ _unpack_len[int32_t ](buf, 0 , & numelements)
235+ offset = sizeof(int32_t )
250236 protocol_version = max (3 , protocol_version)
251237 for _ in range (numelements):
252- subelem[itemlen_t] (buf, & elem_buf, & offset, dummy_version )
238+ subelem(buf, & elem_buf, & offset)
253239 result.append(from_binary(deserializer, & elem_buf, protocol_version))
254240
255241 return result
256242
257243
258244cdef inline int subelem(
259- Buffer * buf, Buffer * elem_buf, int * offset, itemlen_t dummy ) except - 1 :
245+ Buffer * buf, Buffer * elem_buf, int * offset) except - 1 :
260246 """
261247 Read the next element from the buffer: first read the size (in bytes) of the
262248 element, then fill elem_buf with a newly sliced buffer of this size (and the
263249 right offset).
264250 """
265- cdef itemlen_t elemlen
251+ cdef int32_t elemlen
266252
267- _unpack_len[itemlen_t ](buf, offset[0 ], & elemlen)
268- offset[0 ] += sizeof(itemlen_t )
253+ _unpack_len[int32_t ](buf, offset[0 ], & elemlen)
254+ offset[0 ] += sizeof(int32_t )
269255 slice_buffer(buf, elem_buf, offset[0 ], elemlen)
270256 offset[0 ] += elemlen
271257 return 0
272258
273259
274- cdef int _unpack_len(Buffer * buf, int offset, itemlen_t * output) except - 1 :
260+ cdef int _unpack_len(Buffer * buf, int offset, int32_t * output) except - 1 :
275261 cdef Buffer itemlen_buf
276- slice_buffer(buf, & itemlen_buf, offset, sizeof(itemlen_t ))
262+ slice_buffer(buf, & itemlen_buf, offset, sizeof(int32_t ))
277263
278- if itemlen_t is uint16_t:
279- output[0 ] = unpack_num[uint16_t](& itemlen_buf)
280- else :
281- output[0 ] = unpack_num[int32_t](& itemlen_buf)
264+ output[0 ] = unpack_num[int32_t](& itemlen_buf)
282265
283266 return 0
284267
@@ -295,42 +278,33 @@ cdef class DesMapType(_DesParameterizedType):
295278 self .val_deserializer = self .deserializers[1 ]
296279
297280 cdef deserialize(self , Buffer * buf, int protocol_version):
298- cdef uint16_t v2_and_below = 0
299- cdef int32_t v3_and_above = 0
300281 key_type, val_type = self .cqltype.subtypes
301282
302- if protocol_version >= 3 :
303- result = _deserialize_map[int32_t](
304- v3_and_above, buf, protocol_version,
305- self .key_deserializer, self .val_deserializer,
306- key_type, val_type)
307- else :
308- result = _deserialize_map[uint16_t](
309- v2_and_below, buf, protocol_version,
310- self .key_deserializer, self .val_deserializer,
311- key_type, val_type)
283+ result = _deserialize_map(
284+ buf, protocol_version,
285+ self .key_deserializer, self .val_deserializer,
286+ key_type, val_type)
312287
313288 return result
314289
315290
316- cdef _deserialize_map(itemlen_t dummy_version,
317- Buffer * buf, int protocol_version,
291+ cdef _deserialize_map(Buffer * buf, int protocol_version,
318292 Deserializer key_deserializer, Deserializer val_deserializer,
319293 key_type, val_type):
320294 cdef Buffer key_buf, val_buf
321295 cdef Buffer itemlen_buf
322296
323- cdef itemlen_t numelements
297+ cdef int32_t numelements
324298 cdef int offset
325299 cdef list result = []
326300
327- _unpack_len[itemlen_t ](buf, 0 , & numelements)
328- offset = sizeof(itemlen_t )
301+ _unpack_len[int32_t ](buf, 0 , & numelements)
302+ offset = sizeof(int32_t )
329303 themap = util.OrderedMapSerializedKey(key_type, protocol_version)
330304 protocol_version = max (3 , protocol_version)
331305 for _ in range (numelements):
332- subelem[itemlen_t] (buf, & key_buf, & offset, dummy_version )
333- subelem[itemlen_t] (buf, & val_buf, & offset, numelements )
306+ subelem(buf, & key_buf, & offset)
307+ subelem(buf, & val_buf, & offset)
334308 key = from_binary(key_deserializer, & key_buf, protocol_version)
335309 val = from_binary(val_deserializer, & val_buf, protocol_version)
336310 themap._insert_unchecked(key, to_bytes(& key_buf), val)
0 commit comments