|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.management.Attribute org.archive.crawler.settings.Type org.archive.crawler.settings.ComplexType org.archive.crawler.settings.ModuleType org.archive.crawler.frontier.AdaptiveRevisitFrontier
public class AdaptiveRevisitFrontier
A Frontier that will repeatedly visit all encountered URIs.
Wait time between visits is configurable and varies based on observed changes of documents.
The Frontier borrows many things from HostQueuesFrontier, but implements an entirely different strategy in issuing URIs and consequently in keeping a record of discovered URIs.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.archive.crawler.settings.ComplexType |
---|
ComplexType.MBeanAttributeInfoIterator |
Nested classes/interfaces inherited from interface org.archive.crawler.framework.Frontier |
---|
Frontier.FrontierGroup |
Field Summary | |
---|---|
protected static java.lang.String |
ACCEPTABLE_FORCE_QUEUE
Acceptable characters in forced queue names. |
static java.lang.String |
ATTR_DELAY_FACTOR
How many multiples of last fetch elapsed time to wait before recontacting same server |
static java.lang.String |
ATTR_FORCE_QUEUE
Queue assignment to force on CrawlURIs. |
static java.lang.String |
ATTR_HOST_VALENCE
Maximum simultaneous requests in process to a host (queue) |
static java.lang.String |
ATTR_MAX_DELAY
Never wait more than this long, regardless of multiple |
static java.lang.String |
ATTR_MAX_RETRIES
Maximum times to emit a CrawlURI without final disposition |
static java.lang.String |
ATTR_MIN_DELAY
Always wait this long after one completion before recontacting same server, regardless of multiple |
static java.lang.String |
ATTR_PREFERENCE_EMBED_HOPS
Number of hops of embeds (ERX) to bump to front of host queue |
static java.lang.String |
ATTR_QUEUE_ASSIGNMENT_POLICY
The Class to use for QueueAssignmentPolicy |
static java.lang.String |
ATTR_QUEUE_IGNORE_WWW
Should the queue assignment ignore www in hostnames, effectively stripping them away. |
static java.lang.String |
ATTR_RETRY_DELAY
For retryable problems, seconds to wait before a retry |
static java.lang.String |
ATTR_USE_URI_UNIQ_FILTER
Should the Frontier use a seperate 'already included' datastructure or rely on the queues'. |
protected static java.lang.String |
DEFAULT_FORCE_QUEUE
|
protected static java.lang.String |
DEFAULT_QUEUE_ASSIGNMENT_POLICY
|
protected static java.lang.Boolean |
DEFAULT_QUEUE_IGNORE_WWW
|
protected static java.lang.Boolean |
DEFAULT_USE_URI_UNIQ_FILTER
|
Fields inherited from class org.archive.crawler.settings.ComplexType |
---|
definition, definitionMap |
Fields inherited from interface org.archive.crawler.framework.Frontier |
---|
ATTR_NAME |
Fields inherited from interface org.archive.crawler.frontier.AdaptiveRevisitAttributeConstants |
---|
A_CONTENT_STATE_KEY, A_DISCARD_REVISIT, A_FETCH_OVERDUE, A_LAST_CONTENT_DIGEST, A_LAST_DATESTAMP, A_LAST_ETAG, A_NUMBER_OF_VERSIONS, A_NUMBER_OF_VISITS, A_TIME_OF_NEXT_PROCESSING, A_WAIT_INTERVAL, A_WAIT_REEVALUATED, CONTENT_CHANGED, CONTENT_UNCHANGED, CONTENT_UNKNOWN |
Constructor Summary | |
---|---|
AdaptiveRevisitFrontier(java.lang.String name)
|
|
AdaptiveRevisitFrontier(java.lang.String name,
java.lang.String description)
|
Method Summary | |
---|---|
long |
averageDepth()
|
protected void |
batchFlush()
|
protected void |
batchSchedule(CandidateURI caUri)
|
protected long |
calculateSnoozeTime(CrawlURI curi)
Calculates how long a host queue needs to be snoozed following the crawling of a URI. |
protected java.lang.String |
canonicalize(CandidateURI cauri)
Canonicalize passed CandidateURI. |
protected java.lang.String |
canonicalize(UURI uuri)
Canonicalize passed uuri. |
float |
congestionRatio()
|
void |
considerIncluded(UURI u)
Notify Frontier that it should consider the given UURI as if already scheduled. |
void |
crawlCheckpoint(java.io.File checkpointDir)
Called by CrawlController when checkpointing. |
void |
crawlEnded(java.lang.String sExitMessage)
Called when a CrawlController has ended a crawl and is about to exit. |
void |
crawlEnding(java.lang.String sExitMessage)
Called when a CrawlController is ending a crawl (for any reason) |
void |
crawlPaused(java.lang.String statusMessage)
Called when a CrawlController is actually paused (all threads are idle). |
void |
crawlPausing(java.lang.String statusMessage)
Called when a CrawlController is going to be paused. |
void |
crawlResuming(java.lang.String statusMessage)
Called when a CrawlController is resuming a crawl that had been paused. |
void |
crawlStarted(java.lang.String message)
Called on crawl start. |
protected UriUniqFilter |
createAlreadyIncluded()
Create a UriUniqFilter that will serve as record of already seen URIs. |
long |
deepestUri()
|
void |
deleted(CrawlURI curi)
Notify Frontier that a CrawlURI has been deleted outside of the normal next()/finished() lifecycle. |
long |
deleteURIs(java.lang.String match)
Delete any URI that matches the given regular expression from the list of discovered and pending URIs. |
long |
deleteURIs(java.lang.String uriMatch,
java.lang.String queueMatch)
Delete any URI that matches the given regular expression from the list of discovered and pending URIs, if it is in a queue with a name matching the second regular expression. |
long |
discoveredUriCount()
Number of discovered URIs. |
protected void |
disregardDisposition(CrawlURI curi)
|
long |
disregardedUriCount()
Number of URIs that were scheduled at one point but have been disregarded. |
long |
failedFetchCount()
Number of URIs that failed to process. |
protected void |
failureDisposition(CrawlURI curi)
The CrawlURI has encountered a problem, and will not be retried. |
void |
finalTasks()
Perform any final tasks *before* notification crawl has reached 'FINISHED' status. |
void |
finished(CrawlURI curi)
Report a URI being processed as having finished processing. |
long |
finishedUriCount()
Number of URIs that have finished processing. |
java.lang.String |
getClassKey(CandidateURI cauri)
|
FrontierJournal |
getFrontierJournal()
|
Frontier.FrontierGroup |
getGroup(CrawlURI curi)
Get the 'frontier group' (usually queue) for the given CrawlURI. |
protected AdaptiveRevisitHostQueue |
getHQ(CrawlURI curi)
Get the AdaptiveRevisitHostQueue for the given CrawlURI, creating it if necessary. |
FrontierMarker |
getInitialMarker(java.lang.String regexpr,
boolean inCacheOnly)
Get a URIFrontierMarker initialized with the given
regular expression at the 'start' of the Frontier. |
java.lang.String[] |
getReports()
Get an array of report names offered by this Reporter. |
protected CrawlServer |
getServer(CrawlURI curi)
|
java.util.ArrayList<java.lang.String> |
getURIsList(FrontierMarker marker,
int numberOfMatches,
boolean verbose)
Returns a list of all uncrawled URIs starting from a specified marker until numberOfMatches is reached. |
void |
importRecoverLog(java.lang.String pathToLog)
Method is not supported by this Frontier implementation.. |
void |
importRecoverLog(java.lang.String pathToLog,
boolean retainFailures)
This method is not supported by this Frontier implementation |
void |
initialize(CrawlController c)
Initialize the Frontier. |
protected void |
innerFinished(CrawlURI curi)
|
protected void |
innerSchedule(CandidateURI caUri)
|
protected boolean |
isDisregarded(CrawlURI curi)
|
boolean |
isEmpty()
Returns true if the frontier contains no more URIs to crawl. |
void |
kickUpdate()
Notify Frontier that it should consider updating configuration info that may have changed in external files. |
void |
loadSeeds()
Loads the seeds |
protected boolean |
needsPromptRetry(CrawlURI curi)
Checks if a recently completed CrawlURI that did not finish successfully needs to be retried immediately (processed again as soon as politeness allows.) |
protected boolean |
needsRetrying(CrawlURI curi)
Checks if a recently completed CrawlURI that did not finish successfully needs to be retried (processed again after some time elapses) |
CrawlURI |
next()
Get the next URI that should be processed. |
void |
pause()
Notify Frontier that it should not release any URIs, instead holding all threads, until instructed otherwise. |
long |
queuedUriCount()
Number of URIs queued up and waiting for processing. |
void |
receive(CandidateURI item)
|
void |
reportTo(java.io.PrintWriter writer)
Make a default report to the passed-in Writer. |
void |
reportTo(java.lang.String name,
java.io.PrintWriter writer)
Make a report of the given name to the passed-in Writer, If null, give the default report. |
protected void |
reschedule(CrawlURI curi,
boolean errorWait)
Put near top of relevant hostQueue (but behind anything recently scheduled 'high').. |
void |
schedule(CandidateURI caURI)
Schedules a CandidateURI. |
protected boolean |
shouldBeForgotten(CrawlURI curi)
Some URIs, if they recur, deserve another chance at consideration: they might not be too many hops away via another path, or the scope may have been updated to allow them passage. |
java.lang.String |
singleLineLegend()
Return a legend for the single-line summary report as a String. |
java.lang.String |
singleLineReport()
Return a short single-line summary report as a String. |
void |
singleLineReportTo(java.io.PrintWriter w)
Make a single-line summary report to the passed-in writer |
void |
start()
Request that Frontier allow crawling to begin. |
long |
succeededFetchCount()
Number of successfully processed URIs. |
protected void |
successDisposition(CrawlURI curi)
The CrawlURI has been successfully crawled. |
void |
terminate()
Notify Frontier that it should end the crawl, giving any worker ToeThread that askss for a next() an EndedException. |
long |
totalBytesWritten()
Total number of bytes contained in all URIs that have been processed. |
void |
unpause()
Resumes the release of URIs to crawl, allowing worker ToeThreads to proceed. |
Methods inherited from class org.archive.crawler.settings.ModuleType |
---|
addElement, listUsedFiles |
Methods inherited from class org.archive.crawler.settings.Type |
---|
addConstraint, equals, getConstraints, getLegalValueType, isExpertSetting, isOverrideable, isTransient, setExpertSetting, setLegalValueType, setOverrideable, setTransient |
Methods inherited from class javax.management.Attribute |
---|
getName, hashCode |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String ATTR_DELAY_FACTOR
public static final java.lang.String ATTR_MIN_DELAY
public static final java.lang.String ATTR_MAX_DELAY
public static final java.lang.String ATTR_MAX_RETRIES
public static final java.lang.String ATTR_RETRY_DELAY
public static final java.lang.String ATTR_HOST_VALENCE
public static final java.lang.String ATTR_PREFERENCE_EMBED_HOPS
public static final java.lang.String ATTR_FORCE_QUEUE
protected static final java.lang.String DEFAULT_FORCE_QUEUE
protected static final java.lang.String ACCEPTABLE_FORCE_QUEUE
public static final java.lang.String ATTR_QUEUE_IGNORE_WWW
protected static final java.lang.Boolean DEFAULT_QUEUE_IGNORE_WWW
public static final java.lang.String ATTR_USE_URI_UNIQ_FILTER
protected static final java.lang.Boolean DEFAULT_USE_URI_UNIQ_FILTER
public static final java.lang.String ATTR_QUEUE_ASSIGNMENT_POLICY
protected static final java.lang.String DEFAULT_QUEUE_ASSIGNMENT_POLICY
Constructor Detail |
---|
public AdaptiveRevisitFrontier(java.lang.String name)
public AdaptiveRevisitFrontier(java.lang.String name, java.lang.String description)
Method Detail |
---|
public void initialize(CrawlController c) throws FatalConfigurationException, java.io.IOException
Frontier
This method is invoked by the CrawlController once it has created the Frontier. The constructor of the Frontier should only contain code for setting up it's settings framework. This method should contain all other 'startup' code.
initialize
in interface Frontier
c
- The CrawlController that created the Frontier.
FatalConfigurationException
- If provided settings are illegal or
otherwise unusable.
java.io.IOException
- If there is a problem reading settings or seeds file
from disk.protected UriUniqFilter createAlreadyIncluded() throws java.io.IOException
java.io.IOException
public void loadSeeds()
This method is called by initialize() and kickUpdate()
loadSeeds
in interface Frontier
public java.lang.String getClassKey(CandidateURI cauri)
getClassKey
in interface Frontier
cauri
- CandidateURI for which we're to calculate and
set class key.
cauri
.protected java.lang.String canonicalize(UURI uuri)
uuri
- Candidate URI to canonicalize.
uuri
.protected java.lang.String canonicalize(CandidateURI cauri)
canonicalize(UURI)
in that it takes a look at
the CandidateURI context possibly overriding any canonicalization effect if
it could make us miss content. If canonicalization produces an URL that
was 'alreadyseen', but the entry in the 'alreadyseen' database did
nothing but redirect to the current URL, we won't get the current URL;
we'll think we've already see it. Examples would be archive.org
redirecting to www.archive.org or the inverse, www.netarkivet.net
redirecting to netarkivet.net (assuming stripWWW rule enabled).
Note, this method under circumstance sets the forceFetch flag.
cauri
- CandidateURI to examine.
cacuri
.protected void innerSchedule(CandidateURI caUri)
caUri
- The URI to schedule.protected AdaptiveRevisitHostQueue getHQ(CrawlURI curi) throws java.io.IOException
curi
- CrawlURI for which to get a queue
java.io.IOException
protected void batchSchedule(CandidateURI caUri)
protected void batchFlush()
protected CrawlServer getServer(CrawlURI curi)
curi
-
public CrawlURI next() throws java.lang.InterruptedException, EndedException
Frontier
next
in interface Frontier
java.lang.InterruptedException
EndedException
public boolean isEmpty()
Frontier
That is to say that there are no more URIs either currently availible (ready to be emitted), URIs belonging to deferred hosts or pending URIs in the Frontier. Thus this method may return false even if there is no currently availible URI.
isEmpty
in interface Frontier
public void schedule(CandidateURI caURI)
Frontier
This method accepts one URI and schedules it immediately. This has
nothing to do with the priority of the URI being scheduled. Only that
it will be placed in it's respective queue at once. For priority
scheduling see CandidateURI.setSchedulingDirective(int)
This method should be synchronized in all implementing classes.
schedule
in interface Frontier
caURI
- The URI to schedule.CandidateURI.setSchedulingDirective(int)
public void finished(CrawlURI curi)
Frontier
ToeThreads will invoke this method once they have completed work on their assigned URI.
This method is synchronized.
finished
in interface Frontier
curi
- The URI that has finished processing.protected void innerFinished(CrawlURI curi)
protected void successDisposition(CrawlURI curi)
curi
- The CrawlURIprotected void reschedule(CrawlURI curi, boolean errorWait) throws javax.management.AttributeNotFoundException
curi
- CrawlURI to reschedule. Its time of next processing is not
modified.errorWait
- signals if there should be a wait before retrying.
javax.management.AttributeNotFoundException
protected void failureDisposition(CrawlURI curi)
curi
- The CrawlURIprotected void disregardDisposition(CrawlURI curi)
protected boolean shouldBeForgotten(CrawlURI curi)
curi
-
protected boolean needsPromptRetry(CrawlURI curi) throws javax.management.AttributeNotFoundException
curi
- The CrawlURI to check
javax.management.AttributeNotFoundException
- If problems occur trying to read the
maximum number of retries from the settings framework.protected boolean needsRetrying(CrawlURI curi) throws javax.management.AttributeNotFoundException
curi
- The CrawlURI to check
javax.management.AttributeNotFoundException
- If problems occur trying to read the
maximum number of retries from the settings framework.protected boolean isDisregarded(CrawlURI curi)
protected long calculateSnoozeTime(CrawlURI curi)
curi
- The CrawlURI
public long discoveredUriCount()
Frontier
That is any URI that has been confirmed be within 'scope' (i.e. the Frontier decides that it should be processed). This includes those that have been processed, are being processed and have finished processing. Does not include URIs that have been 'forgotten' (deemed out of scope when trying to fetch, most likely due to operator changing scope definition).
Note: This only counts discovered URIs. Since the same URI can (at least in most frontiers) be fetched multiple times, this number may be somewhat lower then the combined queued, in process and finished items combined due to duplicate URIs being queued and processed. This variance is likely to be especially high in Frontiers implementing 'revist' strategies.
discoveredUriCount
in interface Frontier
public long queuedUriCount()
Frontier
This includes any URIs that failed but will be retried. Basically this is any discovered URI that has not either been processed or is being processed. The same discovered URI can be queued multiple times.
queuedUriCount
in interface Frontier
public long finishedUriCount()
Frontier
Includes both those that were processed successfully and failed to be processed (excluding those that failed but will be retried). Does not include those URIs that have been 'forgotten' (deemed out of scope when trying to fetch, most likely due to operator changing scope definition).
finishedUriCount
in interface Frontier
public long succeededFetchCount()
Frontier
Any URI that was processed successfully. This includes URIs that returned 404s and other error codes that do not originate within the crawler.
succeededFetchCount
in interface Frontier
public long failedFetchCount()
Frontier
URIs that could not be processed because of some error or failure in the processing chain. Can include failure to acquire prerequisites, to establish a connection with the host and any number of other problems. Does not count those that will be retried, only those that have permenantly failed.
failedFetchCount
in interface Frontier
public long disregardedUriCount()
Frontier
Counts any URI that is scheduled only to be disregarded because it is determined to lie outside the scope of the crawl. Most commonly this will be due to robots.txt exclusions.
disregardedUriCount
in interface Frontier
public long totalBytesWritten()
Frontier
totalBytesWritten
in interface Frontier
public void importRecoverLog(java.lang.String pathToLog) throws java.io.IOException
pathToLog
-
java.io.IOException
public FrontierMarker getInitialMarker(java.lang.String regexpr, boolean inCacheOnly)
Frontier
URIFrontierMarker
initialized with the given
regular expression at the 'start' of the Frontier.
getInitialMarker
in interface Frontier
regexpr
- The regular expression that URIs within the frontier must
match to be considered within the scope of this markerinCacheOnly
- If set to true, only those URIs within the frontier
that are stored in cache (usually this means in memory
rather then on disk, but that is an implementation
detail) will be considered. Others will be entierly
ignored, as if they dont exist. This is usefull for quick
peeks at the top of the URI list.
public java.util.ArrayList<java.lang.String> getURIsList(FrontierMarker marker, int numberOfMatches, boolean verbose) throws InvalidFrontierMarkerException
Frontier
numberOfMatches
is reached.
Any encountered URI that has not been successfully crawled, terminally failed, disregarded or is currently being processed is included. As there may be duplicates in the frontier, there may also be duplicates in the report. Thus this includes both discovered and pending URIs.
The list is a set of strings containing the URI strings. If verbose is true the string will include some additional information (path to URI and parent).
The URIFrontierMarker
will be advanced to the position at
which it's maximum number of matches found is reached. Reusing it for
subsequent calls will thus effectively get the 'next' batch. Making
any changes to the frontier can invalidate the marker.
While the order returned is consistent, it does not have any explicit relation to the likely order in which they may be processed.
Warning: It is unsafe to make changes to the frontier while this method is executing. The crawler should be in a paused state before invoking it.
getURIsList
in interface Frontier
marker
- A marker specifing from what position in the Frontier the
list should begin.numberOfMatches
- how many URIs to add at most to the list before returning itverbose
- if set to true the strings returned will contain additional
information about each URI beyond their names.
InvalidFrontierMarkerException
- when the
URIFronterMarker
does not match the internal
state of the frontier. Tolerance for this can vary
considerably from one URIFrontier implementation to the next.FrontierMarker
,
Frontier.getInitialMarker(String, boolean)
public long deleteURIs(java.lang.String match)
Frontier
Any encountered URI that has not been successfully crawled, terminally failed, disregarded or is currently being processed is considered to be a pending URI.
Warning: It is unsafe to make changes to the frontier while this method is executing. The crawler should be in a paused state before invoking it.
deleteURIs
in interface Frontier
match
- A regular expression, any URIs that matches it will be
deleted.
public long deleteURIs(java.lang.String uriMatch, java.lang.String queueMatch)
Frontier
Any encountered URI that has not been successfully crawled, terminally failed, disregarded or is currently being processed is considered to be a pending URI.
Warning: It is unsafe to make changes to the frontier while this method is executing. The crawler should be in a paused state before invoking it.
deleteURIs
in interface Frontier
uriMatch
- A regular expression, any URIs that matches will be
deleted from the affected queues.queueMatch
- A regular expression, any queues matching will have
their URIs checked. A null value means all queues.
public void deleted(CrawlURI curi)
Frontier
deleted
in interface Frontier
curi
- Deleted CrawlURI.public void considerIncluded(UURI u)
Frontier
considerIncluded
in interface Frontier
u
- UURI instance to add to the Already Included set.public void kickUpdate()
Frontier
kickUpdate
in interface Frontier
public void start()
Frontier
start
in interface Frontier
public void pause()
Frontier
pause
in interface Frontier
public void unpause()
Frontier
unpause
in interface Frontier
public void terminate()
Frontier
terminate
in interface Frontier
public FrontierJournal getFrontierJournal()
getFrontierJournal
in interface Frontier
FrontierJournal
that
this Frontier is using. May be null if no journaling.public void importRecoverLog(java.lang.String pathToLog, boolean retainFailures) throws java.io.IOException
importRecoverLog
in interface Frontier
pathToLog
- retainFailures
-
java.io.IOException
public java.lang.String[] getReports()
Reporter
getReports
in interface Reporter
public java.lang.String singleLineReport()
Reporter
singleLineReport
in interface Reporter
public void reportTo(java.io.PrintWriter writer) throws java.io.IOException
Reporter
reportTo
in interface Reporter
writer
- to receive report
java.io.IOException
public void singleLineReportTo(java.io.PrintWriter w) throws java.io.IOException
Reporter
singleLineReportTo
in interface Reporter
w
- to receive report
java.io.IOException
public java.lang.String singleLineLegend()
Reporter
singleLineLegend
in interface Reporter
public void reportTo(java.lang.String name, java.io.PrintWriter writer)
Reporter
reportTo
in interface Reporter
writer
- to receive reportpublic void finalTasks()
Frontier
finalTasks
in interface Frontier
public void crawlStarted(java.lang.String message)
CrawlStatusListener
crawlStarted
in interface CrawlStatusListener
message
- Start message.public void crawlEnding(java.lang.String sExitMessage)
CrawlStatusListener
crawlEnding
in interface CrawlStatusListener
sExitMessage
- Type of exit. Should be one of the STATUS constants
in defined in CrawlJob.CrawlJob
public void crawlEnded(java.lang.String sExitMessage)
CrawlStatusListener
crawlEnded
in interface CrawlStatusListener
sExitMessage
- Type of exit. Should be one of the STATUS constants
in defined in CrawlJob.CrawlJob
public void crawlPausing(java.lang.String statusMessage)
CrawlStatusListener
crawlPausing
in interface CrawlStatusListener
statusMessage
- Should be
STATUS_WAITING_FOR_PAUSE
. Passed for conveniencepublic void crawlPaused(java.lang.String statusMessage)
CrawlStatusListener
crawlPaused
in interface CrawlStatusListener
statusMessage
- Should be
CrawlJob.STATUS_PAUSED
. Passed for
conveniencepublic void crawlResuming(java.lang.String statusMessage)
CrawlStatusListener
crawlResuming
in interface CrawlStatusListener
statusMessage
- Should be
CrawlJob.STATUS_RUNNING
. Passed for
conveniencepublic void crawlCheckpoint(java.io.File checkpointDir) throws java.lang.Exception
CrawlStatusListener
CrawlController
when checkpointing.
crawlCheckpoint
in interface CrawlStatusListener
checkpointDir
- Checkpoint dir. Write checkpoint state here.
java.lang.Exception
- A fatal exception. Any exceptions
that are let out of this checkpoint are assumed fatal
and terminate further checkpoint processing.public void receive(CandidateURI item)
receive
in interface UriUniqFilter.HasUriReceiver
item
- Candidate uri tem that is 'visiting'.public Frontier.FrontierGroup getGroup(CrawlURI curi)
Frontier
getGroup
in interface Frontier
curi
- CrawlURI to find matching group
public long averageDepth()
averageDepth
in interface Frontier
public float congestionRatio()
congestionRatio
in interface Frontier
public long deepestUri()
deepestUri
in interface Frontier
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |