org.gudy.azureus2.pluginsimpl.local.download
Class DownloadStatsImpl

java.lang.Object
  extended by org.gudy.azureus2.pluginsimpl.local.download.DownloadStatsImpl
All Implemented Interfaces:
DownloadStats

public class DownloadStatsImpl
extends java.lang.Object
implements DownloadStats


Field Summary
protected  DownloadManager dm
           
protected  DownloadManagerStats dm_stats
           
 
Fields inherited from interface org.gudy.azureus2.plugins.download.DownloadStats
HEALTH_ERROR, HEALTH_KO, HEALTH_NO_REMOTE, HEALTH_NO_TRACKER, HEALTH_OK, HEALTH_STOPPED
 
Constructor Summary
protected DownloadStatsImpl(DownloadManager _dm)
           
 
Method Summary
 float getAvailability()
          Gives the currently seen availability of the torrent
 long getBytesUnavailable()
          Return the number of bytes of data fromt he torrent that is unavailable given the current sources (peers).
 int getCheckingDoneInThousandNotation()
          if isChecking then returns completeness, 1000 -> 100%
 int getCompleted()
          returns a value between 0 and 1000 giving the completion status of the current download task (e.g.
 long getDiscarded()
          Gives the number of bytes discarded.
 long getDownloadAverage()
          Gives average number of bytes downloaded in last second
 long getDownloadAverage(boolean include_protocol)
           
 int getDownloadCompleted(boolean bLive)
          Retrieve the level of download completion, *including* DND files.
 java.lang.String getDownloadDirectory()
          Gives access to the directory into which the download is being saved
 long getDownloaded()
          Gives the number of bytes downloaded
 long getDownloaded(boolean include_protocol)
           
 java.lang.String getElapsedTime()
          Gives the elapsed download time as a string
 java.lang.String getETA()
          Gives the estimated time to completion as a string
 long getETASecs()
          ETA time in seconds.
 long getHashFails()
          Gives the number of bytes thrown away due to piece hash check fails
 int getHealth()
          returns an indication of the health of the torrent
 long getRemaining()
          Gives number of bytes remaining.
 long getRemainingExcludingDND()
           
 long getSecondsDownloading()
          Return the # of seconds that the torrent has been downloading.
 long getSecondsOnlySeeding()
          Return the # of seconds that the torrent has been only seeding.
 long getSecondsSinceLastDownload()
          Returns the number of seconds running time since data was downloaded, -1 if never
 long getSecondsSinceLastUpload()
          Returns the number of seconds running time since data was uploaded, -1 if never
 int getShareRatio()
          Gives the share ratio of the torrent in 1000ths (i.e.
 java.lang.String getStatus()
          Returns an overall string representing the state of the download
 java.lang.String getStatus(boolean localised)
          Returns an overall string representing the state of the download *localised*
 java.lang.String getTargetFileOrDir()
          Gives access to the target file or directory that the download is being saved to
 long getTimeStarted()
          in ms since epoch
 long getTimeStartedSeeding()
          Time that the torrent started seeding.
 long getTotalAverage()
          Gives average number of bytes computed for torrent in last second
 java.lang.String getTrackerStatus()
          returns an general status string for the tracker
 long getUploadAverage()
          Gives average number of bytes uploaded in last second
 long getUploadAverage(boolean include_protocol)
           
 long getUploaded()
          Gives the number of bytes uploaded
 long getUploaded(boolean include_protocol)
           
 void resetUploadedDownloaded(long new_up, long new_down)
          resets totals.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dm

protected DownloadManager dm

dm_stats

protected DownloadManagerStats dm_stats
Constructor Detail

DownloadStatsImpl

protected DownloadStatsImpl(DownloadManager _dm)
Method Detail

getStatus

public java.lang.String getStatus()
Description copied from interface: DownloadStats
Returns an overall string representing the state of the download

Specified by:
getStatus in interface DownloadStats
Returns:

getStatus

public java.lang.String getStatus(boolean localised)
Description copied from interface: DownloadStats
Returns an overall string representing the state of the download *localised*

Specified by:
getStatus in interface DownloadStats
Returns:

getDownloadDirectory

public java.lang.String getDownloadDirectory()
Description copied from interface: DownloadStats
Gives access to the directory into which the download is being saved

Specified by:
getDownloadDirectory in interface DownloadStats
Returns:

getTargetFileOrDir

public java.lang.String getTargetFileOrDir()
Description copied from interface: DownloadStats
Gives access to the target file or directory that the download is being saved to

Specified by:
getTargetFileOrDir in interface DownloadStats
Returns:

getTrackerStatus

public java.lang.String getTrackerStatus()
Description copied from interface: DownloadStats
returns an general status string for the tracker

Specified by:
getTrackerStatus in interface DownloadStats
Returns:

getCompleted

public int getCompleted()
Description copied from interface: DownloadStats
returns a value between 0 and 1000 giving the completion status of the current download task (e.g. checking, downloading)

Specified by:
getCompleted in interface DownloadStats
Returns:

getDownloadCompleted

public int getDownloadCompleted(boolean bLive)
Description copied from interface: DownloadStats
Retrieve the level of download completion, *including* DND files. If the user has one or more DND file, return value will never reach 1000.

To understand the bLive parameter, you must know a bit about the Torrent activation process:
1) Torrent goes into ST_WAITING
2) Torrent moves to ST_PREPARING
3) Torrent moves to ST_DOWNLOADING or ST_SEEDING

While in ST_PREPARING, Completion Level is rebuilt (either via Fast Resume or via piece checking). Quite often, the download completion level before ST_PREPARING and after ST_PREPARING are identical.

Before going into ST_PREPARING, we store the download completion level. If you wish to retrieve this value instead of the live "building" one, pass false for the parameter.

Specified by:
getDownloadCompleted in interface DownloadStats
Parameters:
bLive - true - Always returns the known completion level of the torrent false - In the case of ST_PREPARING, return completion level before of the torrent ST_PREPARING started. Otherwise, same as true.
Returns:
0 - 1000

getCheckingDoneInThousandNotation

public int getCheckingDoneInThousandNotation()
Description copied from interface: DownloadStats
if isChecking then returns completeness, 1000 -> 100%

Specified by:
getCheckingDoneInThousandNotation in interface DownloadStats
Returns:

resetUploadedDownloaded

public void resetUploadedDownloaded(long new_up,
                                    long new_down)
Description copied from interface: DownloadStats
resets totals. stops and restarts torrent if running to do so

Specified by:
resetUploadedDownloaded in interface DownloadStats

getDownloaded

public long getDownloaded()
Description copied from interface: DownloadStats
Gives the number of bytes downloaded

Specified by:
getDownloaded in interface DownloadStats
Returns:

getDownloaded

public long getDownloaded(boolean include_protocol)
Specified by:
getDownloaded in interface DownloadStats
Returns:

getRemaining

public long getRemaining()
Description copied from interface: DownloadStats
Gives number of bytes remaining. *Includes* DND files

Specified by:
getRemaining in interface DownloadStats

getRemainingExcludingDND

public long getRemainingExcludingDND()
Specified by:
getRemainingExcludingDND in interface DownloadStats

getUploaded

public long getUploaded()
Description copied from interface: DownloadStats
Gives the number of bytes uploaded

Specified by:
getUploaded in interface DownloadStats
Returns:

getUploaded

public long getUploaded(boolean include_protocol)
Specified by:
getUploaded in interface DownloadStats
Returns:

getDiscarded

public long getDiscarded()
Description copied from interface: DownloadStats
Gives the number of bytes discarded. Does not include DownloadStats.getHashFails() (ex. end game mode where multiple peers send same block, et)

Specified by:
getDiscarded in interface DownloadStats
Returns:

getDownloadAverage

public long getDownloadAverage()
Description copied from interface: DownloadStats
Gives average number of bytes downloaded in last second

Specified by:
getDownloadAverage in interface DownloadStats
Returns:

getDownloadAverage

public long getDownloadAverage(boolean include_protocol)
Specified by:
getDownloadAverage in interface DownloadStats
Returns:

getUploadAverage

public long getUploadAverage()
Description copied from interface: DownloadStats
Gives average number of bytes uploaded in last second

Specified by:
getUploadAverage in interface DownloadStats
Returns:

getUploadAverage

public long getUploadAverage(boolean include_protocol)
Specified by:
getUploadAverage in interface DownloadStats
Returns:

getTotalAverage

public long getTotalAverage()
Description copied from interface: DownloadStats
Gives average number of bytes computed for torrent in last second

Specified by:
getTotalAverage in interface DownloadStats
Returns:

getElapsedTime

public java.lang.String getElapsedTime()
Description copied from interface: DownloadStats
Gives the elapsed download time as a string

Specified by:
getElapsedTime in interface DownloadStats
Returns:

getETA

public java.lang.String getETA()
Description copied from interface: DownloadStats
Gives the estimated time to completion as a string

Specified by:
getETA in interface DownloadStats
Returns:

getETASecs

public long getETASecs()
Description copied from interface: DownloadStats
ETA time in seconds.

Specified by:
getETASecs in interface DownloadStats
Returns:
0 = download is complete.
< 0 = download is complete and it took -xxx time to complete.
-1 = unknown eta (no peer manager) or download completed 1s ago
315360000000L = incomplete and 0 average speed

getHashFails

public long getHashFails()
Description copied from interface: DownloadStats
Gives the number of bytes thrown away due to piece hash check fails

Specified by:
getHashFails in interface DownloadStats
Returns:

getShareRatio

public int getShareRatio()
Description copied from interface: DownloadStats
Gives the share ratio of the torrent in 1000ths (i.e. 1000 = share ratio of 1)

Specified by:
getShareRatio in interface DownloadStats
Returns:

getTimeStarted

public long getTimeStarted()
Description copied from interface: DownloadStats
in ms since epoch

Specified by:
getTimeStarted in interface DownloadStats

getAvailability

public float getAvailability()
Description copied from interface: DownloadStats
Gives the currently seen availability of the torrent

Specified by:
getAvailability in interface DownloadStats
Returns:

getBytesUnavailable

public long getBytesUnavailable()
Description copied from interface: DownloadStats
Return the number of bytes of data fromt he torrent that is unavailable given the current sources (peers). Does not exclude DND files

Specified by:
getBytesUnavailable in interface DownloadStats
Returns:
-1 if could not be determined

getSecondsOnlySeeding

public long getSecondsOnlySeeding()
Description copied from interface: DownloadStats
Return the # of seconds that the torrent has been only seeding. This number is totalled across sessions, and does not include the time seeding during the download phase.

Specified by:
getSecondsOnlySeeding in interface DownloadStats
Returns:
-1 if it has never seeded

getSecondsDownloading

public long getSecondsDownloading()
Description copied from interface: DownloadStats
Return the # of seconds that the torrent has been downloading. This number is totalled across sessions.

Specified by:
getSecondsDownloading in interface DownloadStats
Returns:
-1 if it has never downloaded

getTimeStartedSeeding

public long getTimeStartedSeeding()
Description copied from interface: DownloadStats
Time that the torrent started seeding.

Specified by:
getTimeStartedSeeding in interface DownloadStats
Returns:
the difference, measured in milliseconds, between the torrent started seeding and midnight, January 1, 1970 UTC. see SystemTime.getCurrentTime(). -1 is not seeding

getSecondsSinceLastDownload

public long getSecondsSinceLastDownload()
Description copied from interface: DownloadStats
Returns the number of seconds running time since data was downloaded, -1 if never

Specified by:
getSecondsSinceLastDownload in interface DownloadStats
Returns:

getSecondsSinceLastUpload

public long getSecondsSinceLastUpload()
Description copied from interface: DownloadStats
Returns the number of seconds running time since data was uploaded, -1 if never

Specified by:
getSecondsSinceLastUpload in interface DownloadStats
Returns:

getHealth

public int getHealth()
Description copied from interface: DownloadStats
returns an indication of the health of the torrent

Specified by:
getHealth in interface DownloadStats
Returns:
see above HEALTH constants