def update_piece(self, n, data): assert n!= self.last_piece and len(data)==self.piece_size or \ n==self.last_piece and len(data)==(self.size % self.piece_size) or self.piece_size, "Invalid size of piece %d - %d"% (n,len(data)) assert n>=self.first_piece and n<=self.last_piece,'Invalid piece no %d'%n with self._lock: if not self.pieces[n]: self._file.seek(n*self.piece_size) self._file.write(data) self._file.flush() self.pieces[n]=True logger.debug('Received piece %d in thread %s', n, threading.current_thread().name) AbstractFile.update_piece(self, n, data)
def update_piece(self, n, data): assert n!= self.last_piece and len(data)==self.piece_size or \ n==self.last_piece and len(data)==(self.size % self.piece_size) or self.piece_size, "Invalid size of piece %d - %d"% (n,len(data)) assert n >= self.first_piece and n <= self.last_piece, 'Invalid piece no %d' % n with self._lock: if not self.pieces[n]: self._file.seek(n * self.piece_size) self._file.write(data) self._file.flush() self.pieces[n] = True logger.debug('Received piece %d in thread %s', n, threading.current_thread().name) AbstractFile.update_piece(self, n, data)
def prioritize_piece(self, piece, idx): assert piece >= self.first_piece and piece <= self.last_piece, 'Invalid piece no %d' % piece data = None with self._lock: if self.pieces[piece]: sz = self.piece_size if piece < self.last_piece else self.size % self.piece_size self._file.seek(piece * self.piece_size) data = self._file.read(sz) assert len(data) == sz if data: AbstractFile.update_piece(self, piece, data) elif self._prioritize_fn: self._prioritize_fn(piece, idx) else: assert False, 'Missing prioritize fn'
def prioritize_piece(self, piece, idx): assert piece>=self.first_piece and piece<=self.last_piece,'Invalid piece no %d'%piece data=None with self._lock: if self.pieces[piece]: sz = self.piece_size if piece < self.last_piece else self.size % self.piece_size self._file.seek(piece*self.piece_size) data=self._file.read(sz) assert len(data)==sz if data: AbstractFile.update_piece(self, piece, data) elif self._prioritize_fn: self._prioritize_fn(piece,idx) else: assert False, 'Missing prioritize fn'