/ src / dpt / ban-list.js
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