compute file transfer speed on the last 3 seonds only. fixes #2631
This commit is contained in:
		
							parent
							
								
									85e040e574
								
							
						
					
					
						commit
						fddc2e6aa9
					
				
					 1 changed files with 21 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -420,10 +420,18 @@ _('Connection with peer cannot be established.'))
 | 
			
		|||
		#they are not translatable.
 | 
			
		||||
		return _('%(hours)02.d:%(minutes)02.d:%(seconds)02.d')  % times
 | 
			
		||||
 | 
			
		||||
	def _get_eta_and_speed(self, full_size, transfered_size, elapsed_time):
 | 
			
		||||
		if elapsed_time == 0:
 | 
			
		||||
	def _get_eta_and_speed(self, full_size, transfered_size, file_props):
 | 
			
		||||
		if len(file_props['transfered_size']) == 0:
 | 
			
		||||
			return 0., 0.
 | 
			
		||||
		speed = round(float(transfered_size) / elapsed_time)
 | 
			
		||||
		elif len(file_props['transfered_size']) == 1:
 | 
			
		||||
			speed = round(float(transfered_size) / file_props['elapsed-time'])
 | 
			
		||||
		else:
 | 
			
		||||
			# first and last are (time, transfered_size)
 | 
			
		||||
			first = file_props['transfered_size'][0]
 | 
			
		||||
			last = file_props['transfered_size'][-1]
 | 
			
		||||
			transfered = last[1] - first[1]
 | 
			
		||||
			tim = last[0] - first[0]
 | 
			
		||||
			speed = round(float(transfered) / tim)
 | 
			
		||||
		if speed == 0.:
 | 
			
		||||
			return 0., 0.
 | 
			
		||||
		remaining_size = full_size - transfered_size
 | 
			
		||||
| 
						 | 
				
			
			@ -484,8 +492,13 @@ _('Connection with peer cannot be established.'))
 | 
			
		|||
			if file_props.has_key('offset') and file_props['offset']:
 | 
			
		||||
				transfered_size -= file_props['offset'] 
 | 
			
		||||
				full_size -= file_props['offset']
 | 
			
		||||
 | 
			
		||||
			if file_props['elapsed-time'] > 0:
 | 
			
		||||
				file_props['transfered_size'].append((file_props['last-time'], transfered_size))
 | 
			
		||||
			if len(file_props['transfered_size']) > 6:
 | 
			
		||||
				file_props['transfered_size'].pop(0)
 | 
			
		||||
			eta, speed = self._get_eta_and_speed(full_size, transfered_size, 
 | 
			
		||||
				file_props['elapsed-time'])
 | 
			
		||||
				file_props)
 | 
			
		||||
 | 
			
		||||
			self.model.set(iter, C_PROGRESS, text)
 | 
			
		||||
			self.model.set(iter, C_PERCENT, int(percent))
 | 
			
		||||
| 
						 | 
				
			
			@ -547,6 +560,8 @@ _('Connection with peer cannot be established.'))
 | 
			
		|||
		file_props['sender'] = account
 | 
			
		||||
		file_props['receiver'] = contact
 | 
			
		||||
		file_props['tt_account'] = account
 | 
			
		||||
		# keep the last time: transfered_size to compute transfer speed
 | 
			
		||||
		file_props['transfered_size'] = []
 | 
			
		||||
		return file_props
 | 
			
		||||
 | 
			
		||||
	def add_transfer(self, account, contact, file_props):
 | 
			
		||||
| 
						 | 
				
			
			@ -784,6 +799,8 @@ _('Connection with peer cannot be established.'))
 | 
			
		|||
		elif self.is_transfer_active(file_props):
 | 
			
		||||
			file_props['paused'] = True
 | 
			
		||||
			self.set_status(file_props['type'], file_props['sid'], 'pause')
 | 
			
		||||
			# reset that to compute speed only when we resume
 | 
			
		||||
			file_props['transfered_size'] = []
 | 
			
		||||
			self.toggle_pause_continue(False)
 | 
			
		||||
 | 
			
		||||
	def on_cancel_button_clicked(self, widget):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue