Use plain list to store chunk num.
This commit is contained in:
parent
3720d0613e
commit
99bd980f10
2 changed files with 11 additions and 5 deletions
|
@ -96,9 +96,7 @@ class Peer(MessageServer):
|
|||
# TODO: refactor this block, make it prettier
|
||||
for chunknum in range(totalchunknum):
|
||||
for peer_id, possessed_chunks in chunkinfo.items():
|
||||
# first one is a range
|
||||
smallest, largest = possessed_chunks[0]
|
||||
if smallest <= chunknum <= largest or chunknum in possessed_chunks:
|
||||
if chunknum in possessed_chunks:
|
||||
# find the client based on peer id
|
||||
peer = None
|
||||
for client, client_id in self._peers.items():
|
||||
|
@ -113,7 +111,7 @@ class Peer(MessageServer):
|
|||
'chunknum': chunknum
|
||||
})
|
||||
break
|
||||
|
||||
# TODO: update chunkinfo after receiving each chunk
|
||||
with open(destination, 'wb') as dest_file:
|
||||
dest_file.write(b'0' * fileinfo['size'])
|
||||
dest_file.flush()
|
||||
|
|
|
@ -60,8 +60,10 @@ class Tracker(MessageServer):
|
|||
'size': message['size']
|
||||
}
|
||||
chunknum = math.ceil(message['size'] / (512 * 1024))
|
||||
# add to chunkinfo
|
||||
# TODO: optimize how the chunknums are stored
|
||||
self._chunkinfo[message['filename']] = {
|
||||
self._peers[client][0]: [(0, chunknum - 1)]
|
||||
self._peers[client][0]: list(range(0, chunknum))
|
||||
}
|
||||
self._write_message(client, {
|
||||
'type': MessageType.REPLY_PUBLISH,
|
||||
|
@ -83,6 +85,12 @@ class Tracker(MessageServer):
|
|||
'fileinfo': self._file_list[message['filename']],
|
||||
'chunkinfo': self._chunkinfo[message['filename']]
|
||||
})
|
||||
elif message['type'] == MessageType.REQUEST_CHUNK_REGISTER:
|
||||
peer_id, _ = self._peers[client]
|
||||
if peer_id in self._chunkinfo[message['filename']]:
|
||||
self._chunkinfo[message['filename']][peer_id].append(message['chunknum'])
|
||||
else:
|
||||
self._chunkinfo[message['filename']][peer_id] = [message['chunknum']]
|
||||
else:
|
||||
logger.error('Undefined message with {} type, full packet: {}'.format(message['type'], message))
|
||||
|
||||
|
|
Loading…
Reference in a new issue