@@ -87,12 +87,8 @@ def read(self, n):
87
87
else :
88
88
value = bytearray (self ._view [start :end ])
89
89
n -= end - start
90
- continue
91
90
return memoryview (value )
92
91
93
- def close (self ):
94
- self ._view = None
95
-
96
92
97
93
class ChunkedInputBuffer (object ):
98
94
@@ -213,7 +209,6 @@ def discard_message(self):
213
209
self ._frame .close ()
214
210
self ._origin = self ._limit
215
211
self ._limit = - 1
216
- self ._frame .close () # close the frame to release the reference
217
212
self ._frame = None
218
213
219
214
@@ -236,25 +231,23 @@ def clear(self):
236
231
self ._data [0 :2 ] = b"\x00 \x00 "
237
232
238
233
def write (self , b ):
239
- new_data_start = 0
240
- new_data_size = len (b )
241
- data_size = self ._end - self ._start
242
- if data_size > new_data_size :
243
- new_end = self ._end + new_data_size
244
- self ._data [self ._end :new_end ] = bytearray (data_size )
245
- while new_data_start < new_data_size :
246
- chunk_occupied = self ._end - self ._start
247
- chunk_remaining = self ._max_chunk_size - chunk_occupied
248
- if chunk_remaining == 0 :
234
+ to_write = len (b )
235
+ max_chunk_size = self ._max_chunk_size
236
+ pos = 0
237
+ while to_write > 0 :
238
+ chunk_size = self ._end - self ._start
239
+ remaining = max_chunk_size - chunk_size
240
+ if remaining == 0 or remaining < to_write <= max_chunk_size :
249
241
self .chunk ()
250
- chunk_remaining = self ._max_chunk_size
251
- chunk_write_size = min (chunk_remaining , new_data_size - new_data_start )
252
- new_end = self ._end + chunk_write_size
253
- new_chunk_size = new_end - self ._start
254
- self ._data [self ._end :new_end ] = b [new_data_start :(new_data_start + chunk_write_size )]
255
- new_data_start += chunk_write_size
256
- self ._end = new_end
257
- self ._data [self ._header :(self ._header + 2 )] = struct_pack (">H" , new_chunk_size )
242
+ else :
243
+ wrote = min (to_write , remaining )
244
+ new_end = self ._end + wrote
245
+ self ._data [self ._end :new_end ] = b [pos :pos + wrote ]
246
+ self ._end = new_end
247
+ pos += wrote
248
+ new_chunk_size = self ._end - self ._start
249
+ self ._data [self ._header :(self ._header + 2 )] = struct_pack (">H" , new_chunk_size )
250
+ to_write -= wrote
258
251
259
252
def chunk (self ):
260
253
self ._header = self ._end
0 commit comments