Changeset 5383f9f


Ignore:
Timestamp:
Nov 25, 2014 2:25:42 PM (7 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
449ce31
Parents:
a16d17c
Message:

Profiles: Change slice selection argument from an int to an enum for clarity

Location:
router/java/src/net/i2p/router
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java

    ra16d17c r5383f9f  
    369369   
    370370    /**
     371     *  Replaces integer subTierMode argument, for clarity
     372     *
     373     *  @since 0.9.18
     374     */
     375    public enum Slice {
     376
     377        SLICE_ALL(0x00, 0),
     378        SLICE_0_1(0x02, 0),
     379        SLICE_2_3(0x02, 2),
     380        SLICE_0(0x03, 0),
     381        SLICE_1(0x03, 1),
     382        SLICE_2(0x03, 2),
     383        SLICE_3(0x03, 3);
     384
     385        final int mask, val;
     386
     387        Slice(int mask, int val) {
     388            this.mask = mask;
     389            this.val = val;
     390        }
     391    }
     392
     393    /**
    371394     * Return a set of Hashes for peers that are both fast and reliable.  If an insufficient
    372395     * number of peers are both fast and reliable, fall back onto high capacity peers, and if that
     
    389412     *</pre>
    390413     */
    391     public void selectFastPeers(int howMany, Set<Hash> exclude, Set<Hash> matches, Hash randomKey, int subTierMode) {
     414    public void selectFastPeers(int howMany, Set<Hash> exclude, Set<Hash> matches, Hash randomKey, Slice subTierMode) {
    392415        getReadLock();
    393416        try {
    394             if (subTierMode > 0) {
     417            if (subTierMode != Slice.SLICE_ALL) {
    395418                int sz = _fastPeers.size();
    396                 if (sz < 6 || (subTierMode >= 4 && sz < 12))
    397                     subTierMode = 0;
    398             }
    399             if (subTierMode > 0)
     419                if (sz < 6 || (subTierMode.mask >= 3 && sz < 12))
     420                    subTierMode = Slice.SLICE_ALL;
     421            }
     422            if (subTierMode != Slice.SLICE_ALL)
    400423                locked_selectPeers(_fastPeers, howMany, exclude, matches, randomKey, subTierMode);
    401424            else
     
    13031326     *</pre>
    13041327     */
    1305     private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude, Set<Hash> matches, Hash randomKey, int subTierMode) {
     1328    private void locked_selectPeers(Map<Hash, PeerProfile> peers, int howMany, Set<Hash> toExclude,
     1329                                    Set<Hash> matches, Hash randomKey, Slice subTierMode) {
    13061330        List<Hash> all = new ArrayList<Hash>(peers.keySet());
    13071331        // use RandomIterator to avoid shuffling the whole thing
     
    13151339                continue;
    13161340            int subTier = getSubTier(peer, randomKey);
    1317             if (subTierMode >= 4) {
    1318                 if (subTier != (subTierMode & 0x03))
    1319                     continue;
    1320             } else {
    1321                 if ((subTier >> 1) != (subTierMode & 0x01))
    1322                     continue;
    1323             }
     1341            if ((subTier & subTierMode.mask) != subTierMode.val)
     1342                continue;
    13241343            boolean ok = isSelectable(peer);
    13251344            if (ok)
  • router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java

    ra16d17c r5383f9f  
    99import net.i2p.router.RouterContext;
    1010import net.i2p.router.TunnelPoolSettings;
     11import static net.i2p.router.peermanager.ProfileOrganizer.Slice.*;
    1112
    1213/**
     
    5051                    // exclude existing OBEPs to get some diversity
    5152                }
    52                 ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? 2 : 4);
     53                ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? SLICE_0_1 : SLICE_0);
    5354                matches.remove(ctx.routerHash());
    5455                exclude.addAll(matches);
     
    5859                    // middle hop(s)
    5960                    // group 2 or 3
    60                     ctx.profileOrganizer().selectFastPeers(length - 2, exclude, matches, settings.getRandomKey(), 3);
     61                    ctx.profileOrganizer().selectFastPeers(length - 2, exclude, matches, settings.getRandomKey(), SLICE_2_3);
    6162                    matches.remove(ctx.routerHash());
    6263                    if (matches.size() > 1) {
     
    7677                    // exclude existing IBGWs to get some diversity
    7778                }
    78                 ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? 3 : 5);
     79                ctx.profileOrganizer().selectFastPeers(1, exclude, matches, settings.getRandomKey(), length == 2 ? SLICE_2_3 : SLICE_1);
    7980                matches.remove(ctx.routerHash());
    8081                rv.addAll(matches);
Note: See TracChangeset for help on using the changeset viewer.