Class RankCalculatorReal
- java.lang.Object
-
- com.biglybt.plugin.startstoprules.defaultplugin.RankCalculatorReal
-
- All Implemented Interfaces:
DownloadManagerStateAttributeListener
,DefaultRankCalculator
,java.lang.Comparable<DefaultRankCalculator>
public class RankCalculatorReal extends java.lang.Object implements DefaultRankCalculator, DownloadManagerStateAttributeListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
RankCalculatorReal.SR
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
_sExplainFP
private java.lang.String
_sExplainSR
private static int
ACTIVE_CHANGE_WAIT
Wait XX ms before really changing activity (DL or CDing) state when state changes via speed changeprivate boolean
bActivelyDownloading
private boolean
bActivelySeeding
private static boolean
bAutoStart0Peers
private static boolean
bFirstPriorityIgnore0Peer
private static boolean
bIgnore0Peers
private boolean
bIsFirstPriority
private static boolean
bPreferLargerSwarms
private static COConfigurationListener
configListener
For loading config settingsprivate DownloadManager
core_dm
private Download
dl
private long
dlLastActiveTime
private boolean
dlr_test_active
private int
dlr_test_average_bytes_per_sec
private long
dlr_test_bytes_start
private long
dlr_test_eta
private long
dlr_test_start_time
private int
dlSpecificMaxShareRatio
private int
dlSpecificMinShareRatio
private AEMonitor
downloadData_this_mon
private RankCalculatorReal.SR
downloadSR
private static int
FORCE_ACTIVE_FOR
Force torrent to be "Actively Seeding/Downloading" for this many ms upon start of torrent.private static long
HIGH_LATENCY_MILLIS
private static long
HIGH_LATENCY_RECOVERY_MILLIS
private static int
iFakeFullCopySeedStart
private static int
iFirstPriorityActiveMinutes
private static int
iFirstPriorityIgnoreIdleMinutes
private static int
iFirstPriorityIgnoreSPRatio
private static int
iFirstPrioritySeedingMinutes
private static int
iFirstPriorityType
private static int
iIgnoreRatioPeers
private static int
iIgnoreRatioPeers_SeedStart
private static int
iIgnoreSeedCount
private static int
iIgnoreShareRatio
private static int
iIgnoreShareRatio_SeedStart
private static int
iRankType
Ranking System to useprivate static int
iRankTypeSeedFallback
private static int
iTimed_MinSeedingTimeWithPeers
private long
lastActivationAnnounce
(package private) int
lastModifiedScrapeResultPeers
(package private) int
lastModifiedScrapeResultSeeds
(package private) int
lastModifiedShareRatio
(package private) boolean
lastScrapeResultOk
private long
lastStaleCDRefreshMono
private long
lCDActivelyChangedOnMono
private long
lDLActivelyChangedOnMono
private long
lDownloadingHighLatencyTimeMono
private long
lSeedingHighLatencyTimeMono
private static int
minPeersToBoostNoSeeds
Min # of Peers needed before boosting the rank of downloads with no seedsprivate static int
minQueueingShareRatio
private static int
minSpeedForActiveDL
Min Speed needed to count a incomplete download as being actively downloadingprivate static int
minSpeedForActiveSeeding
Min speed needed to count a complete download as being actively seedingprivate static long
minTimeAlive
private static int
numPeersAsFullCopy
private RankCalculatorSlotReserver
reservedSlot
private StartStopRulesDefaultPlugin
rules
private static int
SEEDONLY_SHIFT
Amount to shift over the rank of the SEEDONLY ranking type, to make room in case the user has fallback to SPRATIO set.private static int
SPRATIO_BASE_LIMIT
Maximium ranking that a torrent can get using the SPRATIO ranking typeprivate static long
STALE_REFRESH_INTERVAL
private long
staleCDOffset
private long
staleCDSinceMono
private java.lang.String
sTrace
private TagFeatureRateLimit[]
tagsWithDLLimits
-
Fields inherited from interface com.biglybt.plugin.startstoprules.defaultplugin.DefaultRankCalculator
DOWNLOAD_ORDER_ETA, DOWNLOAD_ORDER_INDEX, DOWNLOAD_ORDER_REVERSE_SEED_COUNT, DOWNLOAD_ORDER_REVERSE_SIZE, DOWNLOAD_ORDER_SEED_COUNT, DOWNLOAD_ORDER_SIZE, DOWNLOAD_ORDER_SPEED, FIRSTPRIORITY_ALL, FIRSTPRIORITY_ANY, SR_0PEERS, SR_COMPLETE_STARTS_AT, SR_FP_SPRATIOMET, SR_FP0PEERS, SR_IGNORED_LESS_THAN, SR_NEGATIVE_DEBUG, SR_NOSCRAPE, SR_NOTQUEUED, SR_NUMSEEDSMET, SR_RATIOMET, SR_SHARERATIOMET, SR_TIMED_QUEUED_ENDS_AT
-
Fields inherited from interface com.biglybt.core.download.DownloadManagerStateAttributeListener
WILL_BE_READ, WRITTEN
-
-
Constructor Summary
Constructors Constructor Description RankCalculatorReal(StartStopRulesDefaultPlugin _rules, Download _dl)
Default Initializer
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
_recalcSeedingRankSupport(boolean ignore0Peers, int oldSR, boolean is_test)
boolean
activationRequest()
void
addStateAttributeListener(DownloadManagerStateAttributeListener l, java.lang.String attribute, int event_type)
void
appendTrace(java.lang.String str)
void
attributeEventOccurred(DownloadManager download, java.lang.String attribute, int event_type)
private int
calcPeersNoUs()
Get # of peers not including usprivate int
calcPeersNoUs(Download download, DownloadScrapeResult sr)
int
calcSeedsNoUs()
private int
calcSeedsNoUs(Download download, DownloadScrapeResult sr)
Get # of seeds, not including us, AND including fake full copiesprivate int
calcSeedsNoUs(Download download, DownloadScrapeResult sr, int numPeers)
Get # of seeds, not including us, AND including fake full copiesboolean
changeChecker()
Check Seeders for various changes not triggered by listenersint
compareTo(DefaultRankCalculator obj)
Sort first by SeedingRank Descending, then by Position Ascending.void
destroy()
boolean
getActivelyDownloading()
Retrieves whether the torrent is "actively" downloadingboolean
getActivelySeeding()
Retrieves whether the torrent is "actively" seedingDownloadScrapeResult
getAggregatedScrapeResult(boolean b)
boolean
getCachedIsFP()
int
getCoreState()
long
getDLRLastTestETA()
int
getDLRLastTestSpeed()
long
getDLRLastTestTime()
java.lang.String
getDLRTrace()
long
getDownloadAverage()
java.lang.String
getExplainFP()
java.lang.String
getExplainSR()
int
getLastModifiedScrapeResultPeers()
int
getLastModifiedScrapeResultSeeds()
boolean
getLastScrapeResultOk()
long
getLightSeedEligibility()
java.lang.String
getName()
int
getPosition()
java.lang.Object
getRelatedTo()
RankCalculatorSlotReserver
getReservedSlot()
int
getSeedingRank()
Assign Seeding Rank based on RankTypeint
getShareRatio()
long
getSizeExcludingDND()
int
getState()
TagFeatureRateLimit[]
getTagsWithDLLimits()
long
getTimeStarted()
java.lang.String
getTrace()
long
getUploadAverage()
void
initialize()
boolean
isChecking()
boolean
isComplete()
boolean
isControllable()
boolean
isDownloading()
boolean
isFirstPriority()
Does the torrent match First Priority criteria?boolean
isForceActive()
boolean
isForceStart()
boolean
isMoving()
boolean
isQueued()
void
moveTo(int pos)
private boolean
pisFirstPriority(boolean ignore0Peers, boolean is_test, boolean for_tag_fp)
void
recalcSeedingRank()
static void
reloadConfigParams(PluginConfig cfg)
Load config values into the static variablesvoid
removeStateAttributeListener(DownloadManagerStateAttributeListener l, java.lang.String attribute, int event_type)
void
resetTrace()
void
restart()
void
scrapeReceived(DownloadScrapeResult result)
boolean
scrapeResultOk()
void
setDLRActive(long time)
void
setDLRComplete(long time)
void
setDLRInactive()
void
setPosition(int pos)
void
setReservedSlot(RankCalculatorSlotReserver slot)
private void
setupTagData()
void
start()
void
stopAndQueue()
boolean
supportsPosition()
java.lang.String
toString()
boolean
updateLightSeedEligibility(boolean has_slots)
private void
updateScrapeCache()
-
-
-
Field Detail
-
FORCE_ACTIVE_FOR
private static final int FORCE_ACTIVE_FOR
Force torrent to be "Actively Seeding/Downloading" for this many ms upon start of torrent.- See Also:
- Constant Field Values
-
ACTIVE_CHANGE_WAIT
private static final int ACTIVE_CHANGE_WAIT
Wait XX ms before really changing activity (DL or CDing) state when state changes via speed change- See Also:
- Constant Field Values
-
SPRATIO_BASE_LIMIT
private static int SPRATIO_BASE_LIMIT
Maximium ranking that a torrent can get using the SPRATIO ranking type
-
SEEDONLY_SHIFT
private static int SEEDONLY_SHIFT
Amount to shift over the rank of the SEEDONLY ranking type, to make room in case the user has fallback to SPRATIO set.
-
HIGH_LATENCY_MILLIS
private static final long HIGH_LATENCY_MILLIS
- See Also:
- Constant Field Values
-
HIGH_LATENCY_RECOVERY_MILLIS
private static final long HIGH_LATENCY_RECOVERY_MILLIS
- See Also:
- Constant Field Values
-
configListener
private static COConfigurationListener configListener
For loading config settings
-
STALE_REFRESH_INTERVAL
private static final long STALE_REFRESH_INTERVAL
- See Also:
- Constant Field Values
-
iRankType
private static int iRankType
Ranking System to use
-
minPeersToBoostNoSeeds
private static int minPeersToBoostNoSeeds
Min # of Peers needed before boosting the rank of downloads with no seeds
-
minSpeedForActiveDL
private static int minSpeedForActiveDL
Min Speed needed to count a incomplete download as being actively downloading
-
minSpeedForActiveSeeding
private static int minSpeedForActiveSeeding
Min speed needed to count a complete download as being actively seeding
-
iIgnoreSeedCount
private static int iIgnoreSeedCount
-
bIgnore0Peers
private static boolean bIgnore0Peers
-
iIgnoreShareRatio
private static int iIgnoreShareRatio
-
iIgnoreShareRatio_SeedStart
private static int iIgnoreShareRatio_SeedStart
-
iIgnoreRatioPeers
private static int iIgnoreRatioPeers
-
iIgnoreRatioPeers_SeedStart
private static int iIgnoreRatioPeers_SeedStart
-
iRankTypeSeedFallback
private static int iRankTypeSeedFallback
-
bPreferLargerSwarms
private static boolean bPreferLargerSwarms
-
minQueueingShareRatio
private static int minQueueingShareRatio
-
iFirstPriorityIgnoreSPRatio
private static int iFirstPriorityIgnoreSPRatio
-
bFirstPriorityIgnore0Peer
private static boolean bFirstPriorityIgnore0Peer
-
iFirstPriorityType
private static int iFirstPriorityType
-
iFirstPrioritySeedingMinutes
private static int iFirstPrioritySeedingMinutes
-
iFirstPriorityActiveMinutes
private static int iFirstPriorityActiveMinutes
-
iFirstPriorityIgnoreIdleMinutes
private static int iFirstPriorityIgnoreIdleMinutes
-
minTimeAlive
private static long minTimeAlive
-
bAutoStart0Peers
private static boolean bAutoStart0Peers
-
iTimed_MinSeedingTimeWithPeers
private static int iTimed_MinSeedingTimeWithPeers
-
numPeersAsFullCopy
private static int numPeersAsFullCopy
-
iFakeFullCopySeedStart
private static int iFakeFullCopySeedStart
-
dl
private final Download dl
-
core_dm
private final DownloadManager core_dm
-
bActivelyDownloading
private boolean bActivelyDownloading
-
lDLActivelyChangedOnMono
private long lDLActivelyChangedOnMono
-
lDownloadingHighLatencyTimeMono
private long lDownloadingHighLatencyTimeMono
-
downloadSR
private RankCalculatorReal.SR downloadSR
-
bActivelySeeding
private boolean bActivelySeeding
-
lCDActivelyChangedOnMono
private long lCDActivelyChangedOnMono
-
lSeedingHighLatencyTimeMono
private long lSeedingHighLatencyTimeMono
-
staleCDSinceMono
private long staleCDSinceMono
-
staleCDOffset
private long staleCDOffset
-
lastStaleCDRefreshMono
private long lastStaleCDRefreshMono
-
bIsFirstPriority
private boolean bIsFirstPriority
-
dlSpecificMinShareRatio
private int dlSpecificMinShareRatio
-
dlSpecificMaxShareRatio
private int dlSpecificMaxShareRatio
-
dlLastActiveTime
private long dlLastActiveTime
-
_sExplainFP
private java.lang.String _sExplainFP
-
_sExplainSR
private java.lang.String _sExplainSR
-
sTrace
private java.lang.String sTrace
-
downloadData_this_mon
private AEMonitor downloadData_this_mon
-
rules
private final StartStopRulesDefaultPlugin rules
-
tagsWithDLLimits
private TagFeatureRateLimit[] tagsWithDLLimits
-
lastModifiedScrapeResultPeers
int lastModifiedScrapeResultPeers
-
lastModifiedScrapeResultSeeds
int lastModifiedScrapeResultSeeds
-
lastModifiedShareRatio
int lastModifiedShareRatio
-
lastScrapeResultOk
boolean lastScrapeResultOk
-
reservedSlot
private RankCalculatorSlotReserver reservedSlot
-
lastActivationAnnounce
private long lastActivationAnnounce
-
dlr_test_active
private boolean dlr_test_active
-
dlr_test_start_time
private long dlr_test_start_time
-
dlr_test_bytes_start
private long dlr_test_bytes_start
-
dlr_test_average_bytes_per_sec
private int dlr_test_average_bytes_per_sec
-
dlr_test_eta
private long dlr_test_eta
-
-
Constructor Detail
-
RankCalculatorReal
public RankCalculatorReal(StartStopRulesDefaultPlugin _rules, Download _dl)
Default Initializer- Parameters:
_rules
-_dl
-
-
-
Method Detail
-
attributeEventOccurred
public void attributeEventOccurred(DownloadManager download, java.lang.String attribute, int event_type)
- Specified by:
attributeEventOccurred
in interfaceDownloadManagerStateAttributeListener
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceDefaultRankCalculator
-
reloadConfigParams
public static void reloadConfigParams(PluginConfig cfg)
Load config values into the static variables- Parameters:
cfg
-
-
compareTo
public int compareTo(DefaultRankCalculator obj)
Sort first by SeedingRank Descending, then by Position Ascending.- Specified by:
compareTo
in interfacejava.lang.Comparable<DefaultRankCalculator>
-
getRelatedTo
public java.lang.Object getRelatedTo()
- Specified by:
getRelatedTo
in interfaceDefaultRankCalculator
-
getName
public java.lang.String getName()
- Specified by:
getName
in interfaceDefaultRankCalculator
-
getState
public int getState()
- Specified by:
getState
in interfaceDefaultRankCalculator
-
getCoreState
public int getCoreState()
- Specified by:
getCoreState
in interfaceDefaultRankCalculator
-
addStateAttributeListener
public void addStateAttributeListener(DownloadManagerStateAttributeListener l, java.lang.String attribute, int event_type)
- Specified by:
addStateAttributeListener
in interfaceDefaultRankCalculator
-
removeStateAttributeListener
public void removeStateAttributeListener(DownloadManagerStateAttributeListener l, java.lang.String attribute, int event_type)
- Specified by:
removeStateAttributeListener
in interfaceDefaultRankCalculator
-
supportsPosition
public boolean supportsPosition()
- Specified by:
supportsPosition
in interfaceDefaultRankCalculator
-
getPosition
public int getPosition()
- Specified by:
getPosition
in interfaceDefaultRankCalculator
-
setPosition
public void setPosition(int pos)
- Specified by:
setPosition
in interfaceDefaultRankCalculator
-
moveTo
public void moveTo(int pos)
- Specified by:
moveTo
in interfaceDefaultRankCalculator
-
isControllable
public boolean isControllable()
- Specified by:
isControllable
in interfaceDefaultRankCalculator
-
isForceActive
public boolean isForceActive()
- Specified by:
isForceActive
in interfaceDefaultRankCalculator
-
isQueued
public boolean isQueued()
- Specified by:
isQueued
in interfaceDefaultRankCalculator
-
isDownloading
public boolean isDownloading()
- Specified by:
isDownloading
in interfaceDefaultRankCalculator
-
isChecking
public boolean isChecking()
- Specified by:
isChecking
in interfaceDefaultRankCalculator
-
isMoving
public boolean isMoving()
- Specified by:
isMoving
in interfaceDefaultRankCalculator
-
isForceStart
public boolean isForceStart()
- Specified by:
isForceStart
in interfaceDefaultRankCalculator
-
isComplete
public boolean isComplete()
- Specified by:
isComplete
in interfaceDefaultRankCalculator
-
initialize
public void initialize() throws DownloadException
- Specified by:
initialize
in interfaceDefaultRankCalculator
- Throws:
DownloadException
-
start
public void start() throws DownloadException
- Specified by:
start
in interfaceDefaultRankCalculator
- Throws:
DownloadException
-
restart
public void restart() throws DownloadException
- Specified by:
restart
in interfaceDefaultRankCalculator
- Throws:
DownloadException
-
stopAndQueue
public void stopAndQueue() throws DownloadException
- Specified by:
stopAndQueue
in interfaceDefaultRankCalculator
- Throws:
DownloadException
-
getShareRatio
public int getShareRatio()
- Specified by:
getShareRatio
in interfaceDefaultRankCalculator
-
getUploadAverage
public long getUploadAverage()
- Specified by:
getUploadAverage
in interfaceDefaultRankCalculator
-
getDownloadAverage
public long getDownloadAverage()
- Specified by:
getDownloadAverage
in interfaceDefaultRankCalculator
-
getTimeStarted
public long getTimeStarted()
- Specified by:
getTimeStarted
in interfaceDefaultRankCalculator
-
getSizeExcludingDND
public long getSizeExcludingDND()
- Specified by:
getSizeExcludingDND
in interfaceDefaultRankCalculator
-
getAggregatedScrapeResult
public DownloadScrapeResult getAggregatedScrapeResult(boolean b)
- Specified by:
getAggregatedScrapeResult
in interfaceDefaultRankCalculator
-
scrapeResultOk
public boolean scrapeResultOk()
- Specified by:
scrapeResultOk
in interfaceDefaultRankCalculator
-
calcSeedsNoUs
public int calcSeedsNoUs()
- Specified by:
calcSeedsNoUs
in interfaceDefaultRankCalculator
-
calcSeedsNoUs
private int calcSeedsNoUs(Download download, DownloadScrapeResult sr)
Get # of seeds, not including us, AND including fake full copies- Parameters:
download
- Download to get # of seeds for- Returns:
- seed count
-
calcSeedsNoUs
private int calcSeedsNoUs(Download download, DownloadScrapeResult sr, int numPeers)
Get # of seeds, not including us, AND including fake full copies- Parameters:
download
- Download to get # of seeds fornumPeers
- # peers we know of, required to calculate Fake Full Copies- Returns:
- seed count
-
calcPeersNoUs
private int calcPeersNoUs()
Get # of peers not including us
-
calcPeersNoUs
private int calcPeersNoUs(Download download, DownloadScrapeResult sr)
-
getActivelyDownloading
public boolean getActivelyDownloading()
Retrieves whether the torrent is "actively" downloading- Specified by:
getActivelyDownloading
in interfaceDefaultRankCalculator
- Returns:
- true: actively downloading
-
getActivelySeeding
public boolean getActivelySeeding()
Retrieves whether the torrent is "actively" seeding- Specified by:
getActivelySeeding
in interfaceDefaultRankCalculator
- Returns:
- true: actively seeding
-
setupTagData
private void setupTagData()
-
getTagsWithDLLimits
public TagFeatureRateLimit[] getTagsWithDLLimits()
- Specified by:
getTagsWithDLLimits
in interfaceDefaultRankCalculator
-
getLastScrapeResultOk
public boolean getLastScrapeResultOk()
- Specified by:
getLastScrapeResultOk
in interfaceDefaultRankCalculator
-
scrapeReceived
public void scrapeReceived(DownloadScrapeResult result)
- Specified by:
scrapeReceived
in interfaceDefaultRankCalculator
-
updateScrapeCache
private void updateScrapeCache()
-
getLastModifiedScrapeResultPeers
public int getLastModifiedScrapeResultPeers()
- Specified by:
getLastModifiedScrapeResultPeers
in interfaceDefaultRankCalculator
-
getLastModifiedScrapeResultSeeds
public int getLastModifiedScrapeResultSeeds()
- Specified by:
getLastModifiedScrapeResultSeeds
in interfaceDefaultRankCalculator
-
getExplainFP
public java.lang.String getExplainFP()
- Specified by:
getExplainFP
in interfaceDefaultRankCalculator
-
getExplainSR
public java.lang.String getExplainSR()
- Specified by:
getExplainSR
in interfaceDefaultRankCalculator
-
resetTrace
public void resetTrace()
- Specified by:
resetTrace
in interfaceDefaultRankCalculator
-
appendTrace
public void appendTrace(java.lang.String str)
- Specified by:
appendTrace
in interfaceDefaultRankCalculator
-
getTrace
public java.lang.String getTrace()
- Specified by:
getTrace
in interfaceDefaultRankCalculator
-
getSeedingRank
public int getSeedingRank()
Assign Seeding Rank based on RankType- Specified by:
getSeedingRank
in interfaceDefaultRankCalculator
- Returns:
- New Seeding Rank Value
-
recalcSeedingRank
public void recalcSeedingRank()
- Specified by:
recalcSeedingRank
in interfaceDefaultRankCalculator
-
_recalcSeedingRankSupport
private int _recalcSeedingRankSupport(boolean ignore0Peers, int oldSR, boolean is_test)
-
isFirstPriority
public boolean isFirstPriority()
Does the torrent match First Priority criteria?- Specified by:
isFirstPriority
in interfaceDefaultRankCalculator
- Returns:
- FP State
-
pisFirstPriority
private boolean pisFirstPriority(boolean ignore0Peers, boolean is_test, boolean for_tag_fp)
-
getCachedIsFP
public boolean getCachedIsFP()
- Specified by:
getCachedIsFP
in interfaceDefaultRankCalculator
- Returns:
- last calculated FP state
-
setDLRInactive
public void setDLRInactive()
- Specified by:
setDLRInactive
in interfaceDefaultRankCalculator
-
setDLRActive
public void setDLRActive(long time)
- Specified by:
setDLRActive
in interfaceDefaultRankCalculator
-
setDLRComplete
public void setDLRComplete(long time)
- Specified by:
setDLRComplete
in interfaceDefaultRankCalculator
-
getDLRLastTestTime
public long getDLRLastTestTime()
- Specified by:
getDLRLastTestTime
in interfaceDefaultRankCalculator
-
getDLRLastTestSpeed
public int getDLRLastTestSpeed()
- Specified by:
getDLRLastTestSpeed
in interfaceDefaultRankCalculator
-
getDLRLastTestETA
public long getDLRLastTestETA()
- Specified by:
getDLRLastTestETA
in interfaceDefaultRankCalculator
-
getDLRTrace
public java.lang.String getDLRTrace()
- Specified by:
getDLRTrace
in interfaceDefaultRankCalculator
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
changeChecker
public boolean changeChecker()
Check Seeders for various changes not triggered by listeners- Specified by:
changeChecker
in interfaceDefaultRankCalculator
- Returns:
- True: something changed
-
getLightSeedEligibility
public long getLightSeedEligibility()
- Specified by:
getLightSeedEligibility
in interfaceDefaultRankCalculator
-
updateLightSeedEligibility
public boolean updateLightSeedEligibility(boolean has_slots)
- Specified by:
updateLightSeedEligibility
in interfaceDefaultRankCalculator
-
getReservedSlot
public RankCalculatorSlotReserver getReservedSlot()
- Specified by:
getReservedSlot
in interfaceDefaultRankCalculator
-
setReservedSlot
public void setReservedSlot(RankCalculatorSlotReserver slot)
- Specified by:
setReservedSlot
in interfaceDefaultRankCalculator
-
activationRequest
public boolean activationRequest()
- Specified by:
activationRequest
in interfaceDefaultRankCalculator
-
-