Add custom DownloadIncompleteError.

This commit is contained in:
Yuxin Wang 2018-10-13 15:16:41 -04:00
parent b94757c8a0
commit 3582d78700
3 changed files with 6 additions and 1 deletions

View file

@ -1,2 +1,3 @@
from p2pfs.core.peer import Peer
from p2pfs.core.tracker import Tracker
from p2pfs.core.exceptions import DownloadIncompleteError

3
p2pfs/core/exceptions.py Normal file
View file

@ -0,0 +1,3 @@
class DownloadIncompleteError(EOFError):
def __init__(self, chunknum):
self.chunknum = chunknum

View file

@ -8,6 +8,7 @@ import asyncio
import pybase64
from p2pfs.core.message import MessageType, read_message, write_message
from p2pfs.core.server import MessageServer
from p2pfs.core.exceptions import DownloadIncompleteError
logger = logging.getLogger(__name__)
@ -131,7 +132,7 @@ class DownloadManager:
async def _send_request_chunk(self, chunknum):
if len(self._file_chunk_info[chunknum]) == 0:
raise asyncio.IncompleteReadError(expected=self._fileinfo['total_chunknum'], partial=chunknum)
raise DownloadIncompleteError(chunknum=chunknum)
fastest_peer = min(self._file_chunk_info[chunknum], key=lambda address: self._peers[address][2])
try:
await write_message(self._peers[fastest_peer][1], {