comparison mercurial/util.py @ 26479:46143f31290e

util.chunkbuffer: refactor chunk handling logic This will make the next patch easier to read. It provides no benefit on its own.
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 05 Oct 2015 16:34:47 -0700
parents a3f7e5461dbd
children 6ae14d1ca3aa
comparison
equal deleted inserted replaced
26478:a3f7e5461dbd 26479:46143f31290e
1308 if target <= 0: 1308 if target <= 0:
1309 break 1309 break
1310 if not queue: 1310 if not queue:
1311 break 1311 break
1312 1312
1313 chunk = queue.popleft() 1313 chunk = queue[0]
1314 left -= len(chunk) 1314 chunkl = len(chunk)
1315 if left < 0: 1315
1316 # Use full chunk.
1317 if left >= chunkl:
1318 left -= chunkl
1319 queue.popleft()
1320 buf.append(chunk)
1321 # Partial chunk needed.
1322 else:
1323 left -= chunkl
1324 queue.popleft()
1316 queue.appendleft(chunk[left:]) 1325 queue.appendleft(chunk[left:])
1317 buf.append(chunk[:left]) 1326 buf.append(chunk[:left])
1318 else:
1319 buf.append(chunk)
1320 1327
1321 return ''.join(buf) 1328 return ''.join(buf)
1322 1329
1323 def filechunkiter(f, size=65536, limit=None): 1330 def filechunkiter(f, size=65536, limit=None):
1324 """Create a generator that produces the data in the file size 1331 """Create a generator that produces the data in the file size