public NodeInfo remove(NID nid) { _kad.remove(nid); return _nodeMap.remove(nid); }
/** * Final remove for a router info. * Do NOT use for leasesets. */ void dropAfterLookupFailed(Hash peer) { _context.peerManager().removeCapabilities(peer); _kb.remove(peer); //if (removed) { // if (_log.shouldLog(Log.INFO)) // _log.info("Removed kbucket entry for " + peer); //} _ds.remove(peer); }
public void timeReached() { if (!_isRunning) return; long now = _context.clock().now(); int peerCount = 0; for (Iterator<NodeInfo> iter = DHTNodes.this.values().iterator(); iter.hasNext(); ) { NodeInfo peer = iter.next(); if (peer.lastSeen() < now - _expireTime) { iter.remove(); _kad.remove(peer.getNID()); } else { peerCount++; } } if (peerCount > MAX_PEERS) _expireTime = Math.max(_expireTime - DELTA_EXPIRE_TIME, MIN_EXPIRE_TIME); else _expireTime = Math.min(_expireTime + DELTA_EXPIRE_TIME, MAX_EXPIRE_TIME); if (_log.shouldLog(Log.DEBUG)) _log.debug("DHT storage cleaner done, now with " + peerCount + " peers, " + DataHelper.formatDuration(_expireTime) + " expiration"); schedule(CLEAN_TIME); } }
/** * Final remove for a leaseset. * For a router info, will look up in the network before dropping. */ public void fail(Hash dbEntry) { if (!_initialized) return; DatabaseEntry o = _ds.get(dbEntry); if (o == null) { // if we dont know the key, lets make sure it isn't a now-dead peer _kb.remove(dbEntry); _context.peerManager().removeCapabilities(dbEntry); return; } if (o.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO) { lookupBeforeDropping(dbEntry, (RouterInfo)o); return; } // we always drop leaseSets that are failed [timed out], // regardless of how many routers we have. this is called on a lease if // it has expired *or* its tunnels are failing and we want to see if there // are any updates if (_log.shouldLog(Log.INFO)) _log.info("Dropping a lease: " + dbEntry); _ds.remove(dbEntry, false); }