Bigfile: fix piece field bitmask to be used as bytearray consistently (#1982)
* Bigfile: make Piecefield array a bytearray We want an array of characters. Py2 strings made sense to use as an array of characters, but Py3 strings are different and no longer a good choice. * Bigfile: store bits as binary instead of char * BigFile: rename to/from string -> to/from bytes Since the type was changed to bytearray.
This commit is contained in:
parent
1516d55a88
commit
ec6fd48b86
4 changed files with 69 additions and 62 deletions
|
@ -60,13 +60,13 @@ class UiWebsocketPlugin(object):
|
|||
bigfile_sha512_cache[file_key] = sha512
|
||||
|
||||
if sha512 in site.storage.piecefields:
|
||||
piecefield = site.storage.piecefields[sha512].tostring()
|
||||
piecefield = site.storage.piecefields[sha512].tobytes()
|
||||
else:
|
||||
piecefield = None
|
||||
|
||||
if piecefield:
|
||||
row["pieces"] = len(piecefield)
|
||||
row["pieces_downloaded"] = piecefield.count("1")
|
||||
row["pieces_downloaded"] = piecefield.count(b"\x01")
|
||||
row["downloaded_percent"] = 100 * row["pieces_downloaded"] / row["pieces"]
|
||||
if row["pieces_downloaded"]:
|
||||
if row["pieces"] == row["pieces_downloaded"]:
|
||||
|
@ -86,10 +86,10 @@ class UiWebsocketPlugin(object):
|
|||
for peer in site.peers.values():
|
||||
if not peer.time_piecefields_updated or sha512 not in peer.piecefields:
|
||||
continue
|
||||
peer_piecefield = peer.piecefields[sha512].tostring()
|
||||
peer_piecefield = peer.piecefields[sha512].tobytes()
|
||||
if not peer_piecefield:
|
||||
continue
|
||||
if peer_piecefield == "1" * len(peer_piecefield):
|
||||
if peer_piecefield == b"\x01" * len(peer_piecefield):
|
||||
row["peer_seed"] += 1
|
||||
else:
|
||||
row["peer_leech"] += 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue