ban-list.js
1 const LRUCache = require('lru-cache') 2 const createDebugLogger = require('debug') 3 const KBucket = require('./kbucket') 4 5 const debug = createDebugLogger('devp2p:dpt:ban-list') 6 7 class BanList { 8 constructor () { 9 this._lru = new LRUCache({ max: 30000 }) // 10k should be enough (each peer obj can has 3 keys) 10 } 11 12 add (obj, maxAge) { 13 for (let key of KBucket.getKeys(obj)) { 14 debug(`add ${key}, size: ${this._lru.length}`) 15 this._lru.set(key, true, maxAge) 16 } 17 } 18 19 has (obj) { 20 return KBucket.getKeys(obj).some((key) => this._lru.get(key)) 21 } 22 } 23 24 module.exports = BanList