Peter Surda
6655e99aa3
- tracks separately a global list for a faster sum. Needs slightly more memory
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
import time
|
|
|
|
from network.connectionpool import BMConnectionPool
|
|
import asyncore_pollchoose as asyncore
|
|
from state import missingObjects
|
|
|
|
lastReceivedTimestamp = time.time()
|
|
lastReceivedBytes = 0
|
|
currentReceivedSpeed = 0
|
|
lastSentTimestamp = time.time()
|
|
lastSentBytes = 0
|
|
currentSentSpeed = 0
|
|
|
|
def connectedHostsList():
|
|
retval = []
|
|
for i in BMConnectionPool().inboundConnections.values() + \
|
|
BMConnectionPool().outboundConnections.values():
|
|
if not i.fullyEstablished:
|
|
continue
|
|
try:
|
|
retval.append(i)
|
|
except AttributeError:
|
|
pass
|
|
return retval
|
|
|
|
def sentBytes():
|
|
return asyncore.sentBytes
|
|
|
|
def uploadSpeed():
|
|
global lastSentTimestamp, lastSentBytes, currentSentSpeed
|
|
currentTimestamp = time.time()
|
|
if int(lastSentTimestamp) < int(currentTimestamp):
|
|
currentSentBytes = asyncore.sentBytes
|
|
currentSentSpeed = int((currentSentBytes - lastSentBytes) / (currentTimestamp - lastSentTimestamp))
|
|
lastSentBytes = currentSentBytes
|
|
lastSentTimestamp = currentTimestamp
|
|
return currentSentSpeed
|
|
|
|
def receivedBytes():
|
|
return asyncore.receivedBytes
|
|
|
|
def downloadSpeed():
|
|
global lastReceivedTimestamp, lastReceivedBytes, currentReceivedSpeed
|
|
currentTimestamp = time.time()
|
|
if int(lastReceivedTimestamp) < int(currentTimestamp):
|
|
currentReceivedBytes = asyncore.receivedBytes
|
|
currentReceivedSpeed = int((currentReceivedBytes - lastReceivedBytes) /
|
|
(currentTimestamp - lastReceivedTimestamp))
|
|
lastReceivedBytes = currentReceivedBytes
|
|
lastReceivedTimestamp = currentTimestamp
|
|
return currentReceivedSpeed
|
|
|
|
def pendingDownload():
|
|
return len(missingObjects)
|
|
#tmp = {}
|
|
#for connection in BMConnectionPool().inboundConnections.values() + \
|
|
# BMConnectionPool().outboundConnections.values():
|
|
# for k in connection.objectsNewToMe.keys():
|
|
# tmp[k] = True
|
|
#return len(tmp)
|
|
|
|
def pendingUpload():
|
|
#tmp = {}
|
|
#for connection in BMConnectionPool().inboundConnections.values() + \
|
|
# BMConnectionPool().outboundConnections.values():
|
|
# for k in connection.objectsNewToThem.keys():
|
|
# tmp[k] = True
|
|
#This probably isn't the correct logic so it's disabled
|
|
#return len(tmp)
|
|
return 0
|