Packages that use PeerProfile
Package
Description
The Kademlia distributed hash table (DHT) network database: lookup, store and explore jobs, the data store, the floodfill variants, and lookup throttling.
Peer profiles and capacity calculation, peer test jobs, peer selection for tunnel building, and the database and tunnel history used for peer selection.
Tunnel pool management: pool lifecycle, peer selection, build scheduling and failure handling for client and exploratory tunnels.
Helpers and handlers for the router console user interface, packaged in routerconsole.war and accessible only from JSP files.
Uses of PeerProfile in net.i2p.router.networkdb.kademlia
Methods in net.i2p.router.networkdb.kademlia with parameters of type PeerProfileModifier and TypeMethodDescription(package private) static booleanKademliaNetworkDatabaseFacade.hasDirectContact(PeerProfile prof) Direct-contact test on profile evidence only: heard-from or successful-send, never heard-about (that only means someone mentioned them).Uses of PeerProfile in net.i2p.router.peermanager
Classes in net.i2p.router.peermanager that implement interfaces with type arguments of type PeerProfileModifier and TypeClassDescription(package private) classOrder profiles by their capacity, but backwards (highest capacity / value first).(package private) classOrder profiles by their speed (lowest first).Fields in net.i2p.router.peermanager declared as PeerProfileModifier and TypeFieldDescription(package private) final PeerProfilePeerTestJob.PeerData.profileThe peer's performance profile (null if no profile exists).Fields in net.i2p.router.peermanager with type parameters of type PeerProfileModifier and TypeFieldDescriptionprivate final List<Map<Hash, PeerProfile>> ProfileOrganizer._allTiersEvery tier this object retains, in a fixed order, so a pass that must read the whole retained population walks one collection instead of repeating itself per map.private final Map<Hash, PeerProfile> ProfileOrganizer._fastPeersProfiles of peers fast enough for tunnels.private final Map<Hash, PeerProfile> ProfileOrganizer._highCapacityPeersProfiles of peers with high capacity.private final Map<Hash, PeerProfile> ProfileOrganizer._notFailingPeersProfiles of peers not currently failing.private Set<PeerProfile> ProfileOrganizer._strictCapacityOrderAll profiles ordered by inverse capacity.private final Map<Hash, PeerProfile> ProfileOrganizer._wellIntegratedPeersProfiles of peers well integrated into the netdb.private static final Comparator<PeerProfile> ProfileOrganizer.CAPACITY_COMPARATORSorts profiles by capacity, highest first.(package private) final Set<PeerProfile> ProfileOrganizer.CandidateSet.profilesThe candidate profiles.private static final Comparator<PeerProfile> ProfileOrganizer.STALENESS_THEN_CAPACITYEviction order: least recently active first, then lowest capacity.Methods in net.i2p.router.peermanager that return PeerProfileModifier and TypeMethodDescriptionProfileOrganizer.addProfile(PeerProfile profile) Insert a fully-constructed profile into the organizer.ProfileOrganizer.getOrCreateProfileNonblocking(Hash peer) Retrieve an existing profile or create a new one, without blocking on contention.private PeerProfileProfileManagerImpl.getProfile(Hash peer) Blocking.ProfileOrganizer.getProfile(Hash peer) Retrieve the profile for a peer, or null if unknown.private PeerProfileProfileManagerImpl.getProfileNonblocking(Hash peer) Non-blocking.ProfileOrganizer.getProfileNonblocking(Hash peer) Retrieve the profile for a peer without blocking.private PeerProfileProfileOrganizer.lockedGetProfile(Hash peer) Returns a peer's profile with the read lock held.(package private) static PeerProfileProfileOrganizer.profileToPromote(PeerProfile live, PeerProfile fallback) Which profile a promotion pass should act on: the live one when the map has it, the caller's otherwise.ProfilePersistenceHelper.readProfile(File file, long cutoff) Read and parse a single stored profile.private PeerProfileProfileOrganizer.removeFastPeer(Hash peer) Remove a peer from the fast tier, maintaining the quality counter.(package private) static PeerProfileProfileOrganizer.selectNthFastest(Collection<PeerProfile> profiles, long now, double capacityThreshold, int k) Select thek-th fastest qualifying profile (1-based) without sorting the whole candidate set.(package private) static PeerProfileProfileOrganizer.selectSpeedBoundary(Collection<PeerProfile> profiles, long now, double capacityThreshold) The profile whose speed becomes the speed threshold: the one at rankProfileOrganizer.speedThresholdCutoff(int)of the qualifying set, ranked fastest first.Methods in net.i2p.router.peermanager that return types with arguments of type PeerProfileModifier and TypeMethodDescriptionProfilePersistenceHelper.readProfiles()Load all existing profiles from the profile directory.private List<PeerProfile> ProfileOrganizer.sampleTierPeers()Bounded random sample of the retained peers for RTT measurement, capped atProfileOrganizer.DEFAULT_MIN_CANDIDATE_SAMPLEwith a rotated start so successive cycles do not always read the same prefix.Methods in net.i2p.router.peermanager with parameters of type PeerProfileModifier and TypeMethodDescription(package private) static booleanProfileOrganizer.aboveRttCeiling(PeerProfile profile, long rttCeilingMs) True if the peer's measured tunnel-test RTT exceeds the adaptive selection ceiling, indicating it should be excluded from this fast-tier pick while still remaining in the tier (soft signal.ProfileOrganizer.addProfile(PeerProfile profile) Insert a fully-constructed profile into the organizer.static doubleCapacityCalculator.calc(PeerProfile profile) Calculate the capacity for the given peer profile.static doubleIntegrationCalculator.calc(PeerProfile profile) How well integrated the peer is, as a weighted count of recent db introductions plus the integration bonus.static doubleSpeedCalculator.calc(PeerProfile profile) Calculate the estimated speed score for the given peer.private voidProfileOrganizer.clearLossIfReadmitted(PeerProfile profile) Clear the loss demotion flag once a peer has been re-admitted, so the cleared state is persisted and re-admission is not re-evaluated on every reorganize.intInverseCapacityComparator.compare(PeerProfile left, PeerProfile right) Compare the two objects backwards.intSpeedComparator.compare(PeerProfile left, PeerProfile right) private voidProfileOrganizer.feedBaseline(Map<String, ProtocolRttBaseline> baselines, PeerProfile profile, Collection<Transport> transports) Add this peer's best measured latency to its winning transport's baseline.private voidProfilePersistenceHelper.fixupFirstHeardAbout(PeerProfile p) First heard about wasn't always set correctly before, set it to the minimum of all recorded timestamps.private static doubleSpeedCalculator.getBaseScore(RouterContext context, PeerProfile profile) The base speed score of the peer.private static doubleSpeedCalculator.getCongestionFactor(RouterContext context, PeerProfile profile) Factor scaling the score by the network congestion.(package private) static doubleProfileOrganizer.getExcessiveFailurePenalty(Hash peer, PeerProfile prof) Selection penalty multiplier for peers between the soft and hard failure thresholds.private static doubleSpeedCalculator.getRTTFactor(PeerProfile profile) Factor scaling the score by the round trip time.private voidPeerTestJob.ReplySelector.handleSlowTier(PeerProfile prof) Handles a successful test of a slow-tier peer.private booleanProfileOrganizer.hasHighLoss(PeerProfile profile, long now) True if the peer's decayed loss score is at or aboveProfileOrganizer.PROP_LOSSY_THRESHOLD.(package private) static booleanProfileOrganizer.hasRecentProofOfLife(PeerProfile profile, long now) True if the peer has shown proof of life withinProfileOrganizer.PROOF_OF_LIFE_WINDOW_MS: a successful send, heard-from, or heard-about within the last hour.(package private) static booleanProfileOrganizer.hasRecentTierActivity(PeerProfile profile, long activeCutoff) True if the peer showed recent activity within the given cutoff: a heard-from or successful send at or after the cutoff.private booleanProfileOrganizer.hasRecentTunnelFailures(PeerProfile profile) Check if a peer has had recent tunnel failures (failed tests or builds).private booleanProfileOrganizer.hasValidRouterInfo(Hash peer, RouterInfo info, double buildSuccess, PeerProfile prof) Checks the RouterInfo for hidden flag, stale proof of life, usable transport address, bandwidth tier, and tunnel exclusion.private booleanProfileOrganizer.inLossProbation(PeerProfile profile, long now) True if the peer is in loss probation: it was demoted from the fast/ high-cap tiers for packet loss and has not yet produced fresh clean evidence of recovery (seeProfileOrganizer.shouldReadmitLossy(PeerProfile, long)).(package private) static booleanProfileOrganizer.isActiveInWindow(PeerProfile profile, long hideBefore) Whether a profile shows activity within the active window: a peer test counted as active, a successful or failed send, or any contact.private booleanProfileOrganizer.isEligibleForTierFill(PeerProfile profile, double buildSuccess, long now, long activeCutoff) Full eligibility gate for filling the fast/high-cap tiers from the active profile set: not ourselves, passes the tier gates, and active within the cutoff window.private booleanProfileOrganizer.isEligibleForTierFill(PeerProfile profile, double buildSuccess, long now, long activeCutoff, boolean requireAcceptance) Whether a peer may be admitted to a tier by a fill pass.(package private) static booleanProfileOrganizer.isEvictable(PeerProfile profile, Map<Hash, PeerProfile> fastPeers, Map<Hash, PeerProfile> highCapPeers, long activeThreshold, int fastPeerLimit, int highCapacityLimit) Whether a profile is eligible for eviction under the profile cap: not protected by a fast/high-cap tier slot that still has room below its limit, and no send or heard-from activity within the active window.(package private) static booleanProfileOrganizer.isExcessiveLifetimeFailure(PeerProfile prof) Whether the given profile carries excessive cumulative tunnel failures.(package private) static booleanProfileOrganizer.isExpiredProfile(PeerProfile profile, long now, long expireActive, long expirePassive, long expireGossip, long expireUntracked) Whether a profile has expired from its activity tier and should be purged: no activity (send/heard/heard-about) within the tier's expiration window.private booleanProfileOrganizer.isLowAcceptanceLowSample(PeerProfile profile, double ratio, boolean highStress) Small-sample decision: belowProfileOrganizer.MIN_TUNNEL_REQUESTSlifetime requests, apply the loose startup thresholds.private booleanProfileOrganizer.isLowAcceptanceMature(PeerProfile profile, TunnelHistory th, double ratio, long agreed, long rejected, boolean highStress) Mature decision: effective minimum ratio, with a cooldown for recent bandwidth rejections.private booleanProfileOrganizer.isLowTunnelAcceptance(PeerProfile profile, double buildSuccess, long now, int minRequestsForJudgement) Check if peer has low tunnel acceptance ratio, decided from its lifetime accept/reject counts viaProfileOrganizer.excludedOnAcceptance(long, long, int, boolean), then refined by the low-sample or mature path.private static booleanProfileOrganizer.isQualityFastPeer(PeerProfile profile, Map<Hash, PeerProfile> highCap) True when a peer in the fast tier has proven throughput or is in the high-cap tier.private booleanProfileOrganizer.isQualityPeer(PeerProfile profile, long recentCutoff, double buildSuccess) Check if peer is a quality tunnel candidate: good acceptance ratio, selectable, and recently active.(package private) static booleanProfileOrganizer.isReliableBandwidthPeer(PeerProfile profile, long now, boolean established) Reliability gate for high-bandwidth (O/P/X tier) selection: the peer must show a tunnel acceptance ratio of at least 0.3 AND evidence of recent activity.private booleanProfileOrganizer.isRestorableTierPeer(Hash peer, PeerProfile profile, Map<Hash, PeerProfile> tier, double buildSuccess, long now, boolean highCap) Whether a preserved pre-reorganize tier entry may be re-added: not already present in the tier, selectable, no recent tunnel failures, not in loss probation (fast tier) or below the loss demotion threshold (high-cap tier), and acceptable tunnel acceptance.(package private) static booleanProfileOrganizer.isStaleAbsentPeer(PeerProfile profile, long now, long absentThreshold) Whether the peer's last activity (send, heard-from, or heard-about) is older than the absent threshold.private voidProfileOrganizer.lockedPlaceProfile(PeerProfile profile, double buildSuccess) Puts a profile into the pool maps with the write lock held.private voidProfileOrganizer.lockedPlaceProfile(PeerProfile profile, double buildSuccess, int minHighCap, int maxFast, int maxHighCap) Variant taking the tier thresholds, which the caller has already fetched for the whole scan.private voidProfileOrganizer.lockedPromoteProfileToTiers(PeerProfile profile, double buildSuccess) Evaluate a profile for promotion to fast/high-cap tiers without touching the notFailing structures.private booleanProfileOrganizer.lockedPromoteProfileToTiers(PeerProfile profile, double buildSuccess, int minHighCap, int maxFast, int maxHighCap) Evaluate a profile for promotion to the tiers, reporting whether the only thing that stopped it was an unusable transport address.(package private) static booleanProfileOrganizer.needsRouterInfoRefresh(RouterInfo info, PeerProfile profile, long now, long refreshAgeMs) Whether a RouterInfo is old enough that promoting on it risks a build failure: published before the threshold and no proof of life.(package private) booleanProfileOrganizer.passesTierGates(PeerProfile profile, double buildSuccess, long now) Common gate for the fast-tier fill passes, which always require acceptable tunnel acceptance.(package private) booleanProfileOrganizer.passesTierGates(PeerProfile profile, double buildSuccess, long now, boolean requireAcceptance) Common gate for fast/high-cap tier fill passes: the peer must be selectable, have acceptable tunnel acceptance, no recent tunnel failures, and not be in loss probation.private FileProfilePersistenceHelper.pickFile(PeerProfile profile) Chooses the profile file for a peer.(package private) static PeerProfileProfileOrganizer.profileToPromote(PeerProfile live, PeerProfile fallback) Which profile a promotion pass should act on: the live one when the map has it, the caller's otherwise.private booleanProfileOrganizer.promotionNeedsRouterInfoRefresh(PeerProfile profile, long now) Whether this peer's stored RouterInfo is stale enough that promoting on it risks a build failure.(package private) StringProfileOrganizer.promotionSkipReason(PeerProfile profile, Hash peer, double buildSuccess, long now) WhyProfileOrganizer.skipsPromotion(PeerProfile, Hash, double)would skip this profile, or null when it would not.private voidProfileOrganizer.putFastPeer(Hash peer, PeerProfile profile) Add a peer to the fast tier, maintaining the quality counter.private static booleanProfileOrganizer.qualifiesForSpeedRank(PeerProfile profile, long now, double capacityThreshold) Whether a profile qualifies for the speed-threshold ranking: enough capacity to count and recently active.private voidProfileOrganizer.recordFirstHopRtt(PeerProfile profile, int rtt, long when) The single recorder for a measured direct-link RTT.private intProfileOrganizer.sampleFirstHopRtt(PeerProfile profile, Collection<Transport> transports, long now) Record the best RTT any transport reports for this peer, if any.private booleanProfileOrganizer.shouldReadmitLossy(PeerProfile profile, long now) True if a demoted peer may be re-admitted to the tiers: at leastProfileOrganizer.LOSS_READMIT_MIN_AGEhas passed since the demotion AND the transport has reported a loss ratio below the demotion threshold withinProfileOrganizer.PROP_LOSSY_WINDOW.(package private) booleanProfileOrganizer.skipsPromotion(PeerProfile profile, Hash peer, double buildSuccess) Whether the peer should be skipped for tier promotion: not selectable, in a strict country, low tunnel acceptance, high-latency penalty, congested, or in loss probation.private static booleanCapacityCalculator.tooOld(PeerProfile profile, long now) If we haven't heard from them in an hour, they aren't too useful.(package private) voidProfileManagerImpl.updateFloodfillReliability(PeerProfile data) Compute floodfill reliability fromDBHistory.voidProfileOrganizer.writeProfile(PeerProfile profile) Persist the given profile to disk.booleanProfilePersistenceHelper.writeProfile(PeerProfile profile) Write the data from the profile to the file.voidProfilePersistenceHelper.writeProfile(PeerProfile profile, OutputStream out) Write the data from the profile to the stream includes comments.voidProfilePersistenceHelper.writeProfile(PeerProfile profile, OutputStream out, boolean addComments) Write the data from the profile to the stream.Method parameters in net.i2p.router.peermanager with type arguments of type PeerProfileModifier and TypeMethodDescriptionprivate doubleProfileOrganizer.calculateCapacityThresholdFromSet(Set<PeerProfile> activeProfiles, int totalPeers) Helper to calculate capacity threshold from a pre-filtered set of active profiles.private doubleProfileOrganizer.calculateSpeedThreshold(Set<PeerProfile> reordered, long now, double capacityThreshold) Computes the speed threshold over the high-capacity peers.private intProfileOrganizer.count(Map<Hash, PeerProfile> m) Counts the profiles in one pool map.(package private) static intProfileOrganizer.countQualifying(Collection<PeerProfile> profiles, long now, double capacityThreshold) How many of the given profiles qualify for the speed-threshold ranking.private intProfileOrganizer.fillFastTierFallbacks(long now, Set<PeerProfile> activeProfiles, double buildSuccess) Fills the fast tier to the minimum via up to three fallback passes.private intProfileOrganizer.fillHighCapFallback(long now, Set<PeerProfile> activeProfiles, double buildSuccess) Fills the high-capacity tier to the minimum with recently-active selectable peers.(package private) static booleanProfileOrganizer.isEvictable(PeerProfile profile, Map<Hash, PeerProfile> fastPeers, Map<Hash, PeerProfile> highCapPeers, long activeThreshold, int fastPeerLimit, int highCapacityLimit) Whether a profile is eligible for eviction under the profile cap: not protected by a fast/high-cap tier slot that still has room below its limit, and no send or heard-from activity within the active window.private static booleanProfileOrganizer.isQualityFastPeer(PeerProfile profile, Map<Hash, PeerProfile> highCap) True when a peer in the fast tier has proven throughput or is in the high-cap tier.private booleanProfileOrganizer.isRestorableTierPeer(Hash peer, PeerProfile profile, Map<Hash, PeerProfile> tier, double buildSuccess, long now, boolean highCap) Whether a preserved pre-reorganize tier entry may be re-added: not already present in the tier, selectable, no recent tunnel failures, not in loss probation (fast tier) or below the loss demotion threshold (high-cap tier), and acceptable tunnel acceptance.private booleanProfileOrganizer.isX(Map<Hash, PeerProfile> m, Hash peer) Checks whether a peer is in one pool map.private voidProfileOrganizer.lockedPickLowestPriority(List<Map.Entry<Hash, PeerProfile>> candidates, int howMany, Set<Hash> matches) Selects the lowest-priority candidates, penalizing moderately-lossy peers.private voidProfileOrganizer.lockedRebuildTiers(Set<PeerProfile> candidates, double buildSuccess) Reinserts all active profiles into the tier maps.private voidProfileOrganizer.lockedSelectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, int mask, MaskedIPSet ipSet, double buildSuccess, long rttCeiling) Selects peers while holding the lock.private voidProfileOrganizer.lockedSelectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, SessionKey randomKey, ProfileOrganizer.Slice subTierMode, int mask, MaskedIPSet ipSet, double buildSuccess, long rttCeiling) Collects up toProfileOrganizer.maxCandidateSample(int, int)candidates from a tier and hands them toProfileOrganizer.lockedPickLowestPriority(List, int, Set).private voidProfileOrganizer.purgeUnusableFromMap(Map<Hash, PeerProfile> tier, String tierName, long now, double buildSuccess, boolean allowSoftEviction, Map<ProfileOrganizer.PurgeReason, Integer> reasons) Evicts every peer in one tier map thatProfileOrganizer.purgeReasonFor(boolean, boolean, boolean, boolean, boolean, boolean, boolean)rejects.(package private) static PeerProfileProfileOrganizer.selectNthFastest(Collection<PeerProfile> profiles, long now, double capacityThreshold, int k) Select thek-th fastest qualifying profile (1-based) without sorting the whole candidate set.(package private) static PeerProfileProfileOrganizer.selectSpeedBoundary(Collection<PeerProfile> profiles, long now, double capacityThreshold) The profile whose speed becomes the speed threshold: the one at rankProfileOrganizer.speedThresholdCutoff(int)of the qualifying set, ranked fastest first.private voidProfileOrganizer.warnTierStarved(Map<Hash, PeerProfile> peers, int examined, int skipExcluded, int skipGated, int skipSliced, int skipIp, int skipRtt) Rate-limited warning naming the gate that emptied a tier scan.Constructor parameters in net.i2p.router.peermanager with type arguments of type PeerProfileModifierConstructorDescription(package private)CandidateSet(Set<PeerProfile> profiles, double totalIntegration, int expiredCount, int profileCount) Holds one candidate pool and its totals.Uses of PeerProfile in net.i2p.router.tunnel.pool
Methods in net.i2p.router.tunnel.pool with parameters of type PeerProfileModifier and TypeMethodDescription(package private) static intClientPeerSelector.compareAcceptance(PeerProfile prof1, PeerProfile prof2) Acceptance ratio tiers: good (> 0.3) ranks above low (< 0.3), which ranks above dead (<= 0).(package private) static intClientPeerSelector.compareActivity(PeerProfile prof1, PeerProfile prof2, long now, long thirtyMinutes) Peers active within the activity window sort first.(package private) static intClientPeerSelector.compareQuality(Hash p1, Hash p2, Set<Hash> exclude, PeerProfile prof1, PeerProfile prof2, Map<Hash, Long> proven, long now, long thirtyMinutes) Full quality comparison cascade.static intClientPeerSelector.compareReliability(PeerProfile prof1, PeerProfile prof2) Compare floodfill reliability: GOOD > OK > UNKNOWN > BAD.(package private) static intClientPeerSelector.compareTestHistory(PeerProfile prof1, PeerProfile prof2) When both peers have unknown latency (lat=0), peers with a proven test history sort first.(package private) static booleanTunnelPeerSelector.hasConnectivitySignal(PeerProfile profile, long now, long activityWindow) Pre-qualification signal check: does the peer profile show recent connectivity evidence? Heard from or successfully sent to within the last 30 minutes, a successful tunnel test within the activity window, or any test history at all with a >50% acceptance ratio.(package private) static booleanTunnelPeerSelector.hasConnectivitySignal(PeerProfile profile, long now, long activityWindow, boolean established, int quality) Pre-qualification signal check at the given strictness.(package private) booleanClientPeerSelector.isReliable(PeerProfile profile, long now, long tenMinutes, long thirtyMinutes) Reliability gate: the acceptance ratio must be at least 0.3, and the peer must show a recent tunnel-test success, recent activity, or an established connection.private booleanTunnelPeerSelector.wasRecentlyRejected(PeerProfile profile, long cutoffMillis) Whether the peer was rejected as a gateway too recently.Uses of PeerProfile in net.i2p.router.web.helpers
Classes in net.i2p.router.web.helpers that implement interfaces with type arguments of type PeerProfileModifier and TypeClassDescriptionprivate static classUsed for floodfill-only page As of 0.9.29, sorts in true binary order, not base64 string.Fields in net.i2p.router.web.helpers declared as PeerProfileModifier and TypeFieldDescription(package private) final PeerProfileProfileOrganizerRenderer.FloodfillRow.profThe profile shown in the row.Fields in net.i2p.router.web.helpers with type parameters of type PeerProfileModifier and TypeFieldDescription(package private) final Set<PeerProfile> ProfileOrganizerRenderer.ProfileSelection.orderThe profiles in display order.Methods in net.i2p.router.web.helpers with parameters of type PeerProfileModifier and TypeMethodDescriptionprivate longProfileOrganizerRenderer.avgMs(PeerProfile prof, long rate, RateAverages ra) Average DB response time for the rate in ms, or -1 when no data.intProfileOrganizerRenderer.ProfComparator.compare(PeerProfile left, PeerProfile right) intProfileOrganizerRenderer.ProfileComparator.compare(PeerProfile left, PeerProfile right) private static intProfileOrganizerRenderer.failRatePct(PeerProfile prof, RateAverages ra) 1h lookup fail rate as an integer percent, the same value the render emits.private static booleanProfileOrganizerRenderer.isValid(PeerProfile prof, Hash peer, Hash us, boolean requireTunnelHistory) Exclude ourself and profiles never heard from.Method parameters in net.i2p.router.web.helpers with type arguments of type PeerProfileModifier and TypeMethodDescriptionProfileOrganizerRenderer.floodfillStats(Set<PeerProfile> order) ComputeProfileOrganizerRenderer.FloodfillStatsin a single pass over the ordered profiles.private voidProfileOrganizerRenderer.renderFloodfill(Writer out, Set<PeerProfile> order) Render the floodfill table, sorted by 1h fail rate ascending.private voidProfileOrganizerRenderer.renderFloodfillRings(Writer out, Set<PeerProfile> order) Render the floodfill health rings above the floodfill table: peer count, reachability, banned floodfills, mean 1h failure, mean response time, recent activity, lookup reliability and store health.Constructors in net.i2p.router.web.helpers with parameters of type PeerProfileModifierConstructorDescription(package private)FloodfillRow(PeerProfile prof, RateAverages ra) One row of the floodfill table.Constructor parameters in net.i2p.router.web.helpers with type arguments of type PeerProfileModifierConstructorDescription(package private)ProfileSelection(Set<PeerProfile> order, int older, long hideWindow, Set<Hash> fastSet, Set<Hash> highCapSet, Set<Hash> integratedSet) The profiles and sets for one page.