@@ -25,7 +25,7 @@ ctypedef object (*encode_func_ex)(ConnectionSettings settings,
2525
2626
2727ctypedef object (* decode_func_ex)(ConnectionSettings settings,
28- FastReadBuffer buf,
28+ FRBuffer * buf,
2929 const void * arg)
3030
3131
@@ -271,17 +271,17 @@ cdef inline textarray_encode(ConnectionSettings settings, WriteBuffer buf,
271271 buf.write_buffer(array_data)
272272
273273
274- cdef inline array_decode(ConnectionSettings settings, FastReadBuffer buf,
274+ cdef inline array_decode(ConnectionSettings settings, FRBuffer * buf,
275275 decode_func_ex decoder, const void * decoder_arg):
276276 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 ))
280280 list result
281281 int i
282282 int32_t elem_len
283283 int32_t elem_count = 1
284- FastReadBuffer elem_buf = FastReadBuffer.new()
284+ FRBuffer elem_buf
285285 int32_t dims[ARRAY_MAXDIM]
286286 Codec elem_codec
287287
@@ -295,40 +295,40 @@ cdef inline array_decode(ConnectionSettings settings, FastReadBuffer buf,
295295 format(ndims, ARRAY_MAXDIM))
296296
297297 for i in range (ndims):
298- dims[i] = hton.unpack_int32(buf.read( 4 ))
298+ dims[i] = hton.unpack_int32(frb_read(buf, 4 ))
299299 # Ignore the lower bound information
300- buf.read( 4 )
300+ frb_read(buf, 4 )
301301
302302 if ndims == 1 :
303303 # Fast path for flat arrays
304304 elem_count = dims[0 ]
305305 result = cpython.PyList_New(elem_count)
306306
307307 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 ))
309309 if elem_len == - 1 :
310310 elem = None
311311 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)
314314
315315 cpython.Py_INCREF(elem)
316316 cpython.PyList_SET_ITEM(result, i, elem)
317317
318318 else :
319319 result = _nested_array_decode(settings, buf,
320320 decoder, decoder_arg, ndims, dims,
321- elem_buf)
321+ & elem_buf)
322322
323323 return result
324324
325325
326326cdef _nested_array_decode(ConnectionSettings settings,
327- FastReadBuffer buf,
327+ FRBuffer * buf,
328328 decode_func_ex decoder,
329329 const void * decoder_arg,
330330 int32_t ndims, int32_t * dims,
331- FastReadBuffer elem_buf):
331+ FRBuffer * elem_buf):
332332
333333 cdef:
334334 int32_t elem_len
@@ -351,12 +351,12 @@ cdef _nested_array_decode(ConnectionSettings settings,
351351
352352 for i in range (array_len):
353353 # Decode the element.
354- elem_len = hton.unpack_int32(buf.read( 4 ))
354+ elem_len = hton.unpack_int32(frb_read(buf, 4 ))
355355 if elem_len == - 1 :
356356 elem = None
357357 else :
358358 elem = decoder(settings,
359- elem_buf.slice_from( buf, elem_len),
359+ frb_slice_from(elem_buf, buf, elem_len),
360360 decoder_arg)
361361
362362 # Take an explicit reference for PyList_SET_ITEM in the below
@@ -399,7 +399,7 @@ cdef _nested_array_decode(ConnectionSettings settings,
399399 return stride
400400
401401
402- cdef textarray_decode(ConnectionSettings settings, FastReadBuffer buf,
402+ cdef textarray_decode(ConnectionSettings settings, FRBuffer * buf,
403403 decode_func_ex decoder, const void * decoder_arg,
404404 Py_UCS4 typdelim):
405405 cdef:
@@ -455,7 +455,7 @@ cdef _textarray_decode(ConnectionSettings settings,
455455 int i
456456 object item
457457 str item_text
458- FastReadBuffer item_buf = FastReadBuffer.new()
458+ FRBuffer item_buf
459459 char * pg_item_str
460460 ssize_t pg_item_len
461461
@@ -639,9 +639,8 @@ cdef _textarray_decode(ConnectionSettings settings,
639639 # for the element type.
640640 pgproto.as_pg_string_and_size(
641641 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)
645644
646645 # Place the decoded element in the array.
647646 cpython.Py_INCREF(item)
@@ -815,7 +814,7 @@ cdef uint4_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj,
815814 return pgproto.uint4_encode(settings, buf, obj)
816815
817816
818- cdef uint4_decode_ex(ConnectionSettings settings, FastReadBuffer buf,
817+ cdef uint4_decode_ex(ConnectionSettings settings, FRBuffer * buf,
819818 const void * arg):
820819 return pgproto.uint4_decode(settings, buf)
821820
@@ -825,7 +824,7 @@ cdef arrayoid_encode(ConnectionSettings settings, WriteBuffer buf, items):
825824 < encode_func_ex> & uint4_encode_ex, NULL )
826825
827826
828- cdef arrayoid_decode(ConnectionSettings settings, FastReadBuffer buf):
827+ cdef arrayoid_decode(ConnectionSettings settings, FRBuffer * buf):
829828 return array_decode(settings, buf, < decode_func_ex> & uint4_decode_ex, NULL )
830829
831830
@@ -834,7 +833,7 @@ cdef text_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj,
834833 return pgproto.text_encode(settings, buf, obj)
835834
836835
837- cdef text_decode_ex(ConnectionSettings settings, FastReadBuffer buf,
836+ cdef text_decode_ex(ConnectionSettings settings, FRBuffer * buf,
838837 const void * arg):
839838 return pgproto.text_decode(settings, buf)
840839
@@ -844,11 +843,11 @@ cdef arraytext_encode(ConnectionSettings settings, WriteBuffer buf, items):
844843 < encode_func_ex> & text_encode_ex, NULL )
845844
846845
847- cdef arraytext_decode(ConnectionSettings settings, FastReadBuffer buf):
846+ cdef arraytext_decode(ConnectionSettings settings, FRBuffer * buf):
848847 return array_decode(settings, buf, < decode_func_ex> & text_decode_ex, NULL )
849848
850849
851- cdef anyarray_decode(ConnectionSettings settings, FastReadBuffer buf):
850+ cdef anyarray_decode(ConnectionSettings settings, FRBuffer * buf):
852851 # Instances of anyarray (or any other polymorphic pseudotype) are
853852 # never supposed to be returned from actual queries.
854853 raise exceptions.ProtocolError(
0 commit comments