@@ -25,7 +25,7 @@ ctypedef object (*encode_func_ex)(ConnectionSettings settings,
25
25
26
26
27
27
ctypedef object (* decode_func_ex)(ConnectionSettings settings,
28
- FastReadBuffer buf,
28
+ FRBuffer * buf,
29
29
const void * arg)
30
30
31
31
@@ -271,17 +271,17 @@ cdef inline textarray_encode(ConnectionSettings settings, WriteBuffer buf,
271
271
buf.write_buffer(array_data)
272
272
273
273
274
- cdef inline array_decode(ConnectionSettings settings, FastReadBuffer buf,
274
+ cdef inline array_decode(ConnectionSettings settings, FRBuffer * buf,
275
275
decode_func_ex decoder, const void * decoder_arg):
276
276
cdef:
277
- int32_t ndims = hton.unpack_int32(buf.read( 4 ))
278
- int32_t flags = hton.unpack_int32(buf.read( 4 ))
279
- uint32_t elem_oid = < uint32_t> hton.unpack_int32(buf.read( 4 ))
277
+ int32_t ndims = hton.unpack_int32(frb_read(buf, 4 ))
278
+ int32_t flags = hton.unpack_int32(frb_read(buf, 4 ))
279
+ uint32_t elem_oid = < uint32_t> hton.unpack_int32(frb_read(buf, 4 ))
280
280
list result
281
281
int i
282
282
int32_t elem_len
283
283
int32_t elem_count = 1
284
- FastReadBuffer elem_buf = FastReadBuffer.new()
284
+ FRBuffer elem_buf
285
285
int32_t dims[ARRAY_MAXDIM]
286
286
Codec elem_codec
287
287
@@ -295,40 +295,40 @@ cdef inline array_decode(ConnectionSettings settings, FastReadBuffer buf,
295
295
format(ndims, ARRAY_MAXDIM))
296
296
297
297
for i in range (ndims):
298
- dims[i] = hton.unpack_int32(buf.read( 4 ))
298
+ dims[i] = hton.unpack_int32(frb_read(buf, 4 ))
299
299
# Ignore the lower bound information
300
- buf.read( 4 )
300
+ frb_read(buf, 4 )
301
301
302
302
if ndims == 1 :
303
303
# Fast path for flat arrays
304
304
elem_count = dims[0 ]
305
305
result = cpython.PyList_New(elem_count)
306
306
307
307
for i in range (elem_count):
308
- elem_len = hton.unpack_int32(buf.read( 4 ))
308
+ elem_len = hton.unpack_int32(frb_read(buf, 4 ))
309
309
if elem_len == - 1 :
310
310
elem = None
311
311
else :
312
- elem_buf.slice_from( buf, elem_len)
313
- elem = decoder(settings, elem_buf, decoder_arg)
312
+ frb_slice_from( & elem_buf, buf, elem_len)
313
+ elem = decoder(settings, & elem_buf, decoder_arg)
314
314
315
315
cpython.Py_INCREF(elem)
316
316
cpython.PyList_SET_ITEM(result, i, elem)
317
317
318
318
else :
319
319
result = _nested_array_decode(settings, buf,
320
320
decoder, decoder_arg, ndims, dims,
321
- elem_buf)
321
+ & elem_buf)
322
322
323
323
return result
324
324
325
325
326
326
cdef _nested_array_decode(ConnectionSettings settings,
327
- FastReadBuffer buf,
327
+ FRBuffer * buf,
328
328
decode_func_ex decoder,
329
329
const void * decoder_arg,
330
330
int32_t ndims, int32_t * dims,
331
- FastReadBuffer elem_buf):
331
+ FRBuffer * elem_buf):
332
332
333
333
cdef:
334
334
int32_t elem_len
@@ -351,12 +351,12 @@ cdef _nested_array_decode(ConnectionSettings settings,
351
351
352
352
for i in range (array_len):
353
353
# Decode the element.
354
- elem_len = hton.unpack_int32(buf.read( 4 ))
354
+ elem_len = hton.unpack_int32(frb_read(buf, 4 ))
355
355
if elem_len == - 1 :
356
356
elem = None
357
357
else :
358
358
elem = decoder(settings,
359
- elem_buf.slice_from( buf, elem_len),
359
+ frb_slice_from(elem_buf, buf, elem_len),
360
360
decoder_arg)
361
361
362
362
# Take an explicit reference for PyList_SET_ITEM in the below
@@ -399,7 +399,7 @@ cdef _nested_array_decode(ConnectionSettings settings,
399
399
return stride
400
400
401
401
402
- cdef textarray_decode(ConnectionSettings settings, FastReadBuffer buf,
402
+ cdef textarray_decode(ConnectionSettings settings, FRBuffer * buf,
403
403
decode_func_ex decoder, const void * decoder_arg,
404
404
Py_UCS4 typdelim):
405
405
cdef:
@@ -455,7 +455,7 @@ cdef _textarray_decode(ConnectionSettings settings,
455
455
int i
456
456
object item
457
457
str item_text
458
- FastReadBuffer item_buf = FastReadBuffer.new()
458
+ FRBuffer item_buf
459
459
char * pg_item_str
460
460
ssize_t pg_item_len
461
461
@@ -639,9 +639,8 @@ cdef _textarray_decode(ConnectionSettings settings,
639
639
# for the element type.
640
640
pgproto.as_pg_string_and_size(
641
641
settings, item_text, & pg_item_str, & pg_item_len)
642
- item_buf.buf = pg_item_str
643
- item_buf.len = pg_item_len
644
- item = decoder(settings, item_buf, decoder_arg)
642
+ frb_init(& item_buf, pg_item_str, pg_item_len)
643
+ item = decoder(settings, & item_buf, decoder_arg)
645
644
646
645
# Place the decoded element in the array.
647
646
cpython.Py_INCREF(item)
@@ -815,7 +814,7 @@ cdef uint4_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj,
815
814
return pgproto.uint4_encode(settings, buf, obj)
816
815
817
816
818
- cdef uint4_decode_ex(ConnectionSettings settings, FastReadBuffer buf,
817
+ cdef uint4_decode_ex(ConnectionSettings settings, FRBuffer * buf,
819
818
const void * arg):
820
819
return pgproto.uint4_decode(settings, buf)
821
820
@@ -825,7 +824,7 @@ cdef arrayoid_encode(ConnectionSettings settings, WriteBuffer buf, items):
825
824
< encode_func_ex> & uint4_encode_ex, NULL )
826
825
827
826
828
- cdef arrayoid_decode(ConnectionSettings settings, FastReadBuffer buf):
827
+ cdef arrayoid_decode(ConnectionSettings settings, FRBuffer * buf):
829
828
return array_decode(settings, buf, < decode_func_ex> & uint4_decode_ex, NULL )
830
829
831
830
@@ -834,7 +833,7 @@ cdef text_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj,
834
833
return pgproto.text_encode(settings, buf, obj)
835
834
836
835
837
- cdef text_decode_ex(ConnectionSettings settings, FastReadBuffer buf,
836
+ cdef text_decode_ex(ConnectionSettings settings, FRBuffer * buf,
838
837
const void * arg):
839
838
return pgproto.text_decode(settings, buf)
840
839
@@ -844,11 +843,11 @@ cdef arraytext_encode(ConnectionSettings settings, WriteBuffer buf, items):
844
843
< encode_func_ex> & text_encode_ex, NULL )
845
844
846
845
847
- cdef arraytext_decode(ConnectionSettings settings, FastReadBuffer buf):
846
+ cdef arraytext_decode(ConnectionSettings settings, FRBuffer * buf):
848
847
return array_decode(settings, buf, < decode_func_ex> & text_decode_ex, NULL )
849
848
850
849
851
- cdef anyarray_decode(ConnectionSettings settings, FastReadBuffer buf):
850
+ cdef anyarray_decode(ConnectionSettings settings, FRBuffer * buf):
852
851
# Instances of anyarray (or any other polymorphic pseudotype) are
853
852
# never supposed to be returned from actual queries.
854
853
raise exceptions.ProtocolError(
0 commit comments