|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import pickle
|
|
|
|
|
import os
|
|
|
|
|
import threading
|
|
|
|
|
|
|
|
|
|
from bmconfigparser import BMConfigParser
|
|
|
|
@ -9,11 +10,14 @@ knownNodes = {}
|
|
|
|
|
|
|
|
|
|
knownNodesTrimAmount = 2000
|
|
|
|
|
|
|
|
|
|
# forget a node after rating is this low
|
|
|
|
|
knownNodesForgetRating = -0.5
|
|
|
|
|
|
|
|
|
|
def saveKnownNodes(dirName = None):
|
|
|
|
|
if dirName is None:
|
|
|
|
|
dirName = state.appdata
|
|
|
|
|
with knownNodesLock:
|
|
|
|
|
with open(dirName + 'knownnodes.dat', 'wb') as output:
|
|
|
|
|
with open(os.path.join(dirName, 'knownnodes.dat'), 'wb') as output:
|
|
|
|
|
pickle.dump(knownNodes, output)
|
|
|
|
|
|
|
|
|
|
def increaseRating(peer):
|
|
|
|
@ -37,7 +41,7 @@ def decreaseRating(peer):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def trimKnownNodes(recAddrStream = 1):
|
|
|
|
|
if len(knownNodes[recAddrStream]) < BMConfigParser().get("knownnodes", "maxnodes"):
|
|
|
|
|
if len(knownNodes[recAddrStream]) < int(BMConfigParser().get("knownnodes", "maxnodes")):
|
|
|
|
|
return
|
|
|
|
|
with knownNodesLock:
|
|
|
|
|
oldestList = sorted(knownNodes[recAddrStream], key=lambda x: x['lastseen'])[:knownNodesTrimAmount]
|
|
|
|
|