code refactoring.

This commit is contained in:
INADA Naoki 2013-10-20 14:34:36 +09:00
parent d9439204c7
commit 7123341ca8

View file

@ -163,12 +163,10 @@ class Unpacker(object):
self._fb_buf_o = 0 self._fb_buf_o = 0
self._fb_buf_i = 0 self._fb_buf_i = 0
self._fb_buf_n = 0 self._fb_buf_n = 0
self._max_buffer_size = (2**31-1 if max_buffer_size == 0 self._max_buffer_size = max_buffer_size or 2**31-1
else max_buffer_size)
self._read_size = (read_size if read_size != 0
else min(self._max_buffer_size, 2048))
if read_size > self._max_buffer_size: if read_size > self._max_buffer_size:
raise ValueError("read_size must be smaller than max_buffer_size") raise ValueError("read_size must be smaller than max_buffer_size")
self._read_size = read_size or min(self._max_buffer_size, 2048)
self._encoding = encoding self._encoding = encoding
self._unicode_errors = unicode_errors self._unicode_errors = unicode_errors
self._use_list = use_list self._use_list = use_list
@ -234,26 +232,26 @@ class Unpacker(object):
return b''.join(bufs) return b''.join(bufs)
def _fb_read(self, n, write_bytes=None): def _fb_read(self, n, write_bytes=None):
if (write_bytes is None and self._fb_buf_i < len(self._fb_buffers) buffs = self._fb_buffers
and self._fb_buf_o + n < len(self._fb_buffers[self._fb_buf_i])): if (write_bytes is None and self._fb_buf_i < len(buffs) and
self._fb_buf_o + n < len(buffs[self._fb_buf_i])):
self._fb_buf_o += n self._fb_buf_o += n
return self._fb_buffers[self._fb_buf_i][ return buffs[self._fb_buf_i][self._fb_buf_o - n:self._fb_buf_o]
self._fb_buf_o-n:self._fb_buf_o]
ret = b'' ret = b''
while len(ret) != n: while len(ret) != n:
if self._fb_buf_i == len(self._fb_buffers): if self._fb_buf_i == len(buffs):
if self._fb_feeding: if self._fb_feeding:
break break
tmp = self.file_like.read(self._read_size) tmp = self.file_like.read(self._read_size)
if not tmp: if not tmp:
break break
self._fb_buffers.append(tmp) buffs.append(tmp)
continue continue
sliced = n - len(ret) sliced = n - len(ret)
ret += self._fb_buffers[self._fb_buf_i][ ret += buffs[self._fb_buf_i][self._fb_buf_o:self._fb_buf_o + sliced]
self._fb_buf_o:self._fb_buf_o + sliced]
self._fb_buf_o += sliced self._fb_buf_o += sliced
if self._fb_buf_o >= len(self._fb_buffers[self._fb_buf_i]): if self._fb_buf_o >= len(buffs[self._fb_buf_i]):
self._fb_buf_o = 0 self._fb_buf_o = 0
self._fb_buf_i += 1 self._fb_buf_i += 1
if len(ret) != n: if len(ret) != n:
@ -410,10 +408,9 @@ class Unpacker(object):
return return
if self._object_pairs_hook is not None: if self._object_pairs_hook is not None:
ret = self._object_pairs_hook( ret = self._object_pairs_hook(
(self._fb_unpack(EX_CONSTRUCT, write_bytes), (self._fb_unpack(EX_CONSTRUCT, write_bytes),
self._fb_unpack(EX_CONSTRUCT, write_bytes)) self._fb_unpack(EX_CONSTRUCT, write_bytes))
for _ in xrange(n) for _ in xrange(n))
)
else: else:
ret = {} ret = {}
for _ in xrange(n): for _ in xrange(n):