Esempio n. 1
0
 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)
Esempio n. 2
0
    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)
Esempio n. 3
0
 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'
Esempio n. 4
0
 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'