Interface DownloadManager

All Superinterfaces:
Taggable, Taggable
All Known Implementing Classes:
DownloadManagerImpl

public interface DownloadManager extends Taggable
  • Field Details

  • Method Details

    • setConstructed

      void setConstructed()
    • isConstructed

      boolean isConstructed()
    • initialize

      void initialize()
    • getState

      int getState()
    • getSubState

      int getSubState()
      For stopping this returns the target state after stopping (stopped/queued)
      Returns:
    • setStateWaiting

      void setStateWaiting()
    • setStateQueued

      void setStateQueued()
    • startDownload

      void startDownload()
    • canForceRecheck

      boolean canForceRecheck()
    • isForceRechecking

      boolean isForceRechecking()
    • forceRecheck

      void forceRecheck()
    • syncGlobalConfig

      void syncGlobalConfig()
      Called for certain config change events so that individual managers don't have to separately listener for changes
    • resetFile

      void resetFile(DiskManagerFileInfo file)
      Reset the file download state to totally undownloaded. Download must be stopped
      Parameters:
      file -
    • recheckFile

      void recheckFile(DiskManagerFileInfo file)
      Recheck a particular file. Download must be stopped
      Parameters:
      file -
    • requestAllocation

      void requestAllocation(List<DiskManagerFileInfo> files)
      Instructions that file given files need allocation - used when switching file storage types/skipped state Will pause and resume the download if it is active
      Parameters:
      files -
    • setPieceCheckingEnabled

      void setPieceCheckingEnabled(boolean enabled)
      Use with care - introduced to support speed tests whereby we want to avoid checking the virtual torrent used for the test
      Parameters:
      enabled -
    • stopIt

      void stopIt(int stateAfterStopping, boolean remove_torrent, boolean remove_data)
      Stop the download manager, and do any file/torrent removals.
      Parameters:
      stateAfterStopping -
      remove_torrent - remove the .torrent file after stopping
      remove_data - remove the data file after stopping
    • setStopReason

      void setStopReason(String reason)
    • getStopReason

      String getStopReason()
    • stopIt

      void stopIt(int stateAfterStopping, boolean remove_torrent, boolean remove_data, boolean for_removal)
      As above but definitely indicates that the stop is for removal (if for_removal is true) and therefore that any removal specific actions such as removing partial files should be performed
      Parameters:
      stateAfterStopping -
      remove_torrent -
      remove_data -
      for_removal -
    • pause

      boolean pause(boolean only_if_active)
      Parameters:
      only_if_active -
      Returns:
      true -> download was placed into a paused state (including if it was already paused)
    • pause

      boolean pause(boolean only_if_active, long auto_resume_time)
      Parameters:
      auto_resume_time -
      Returns:
      true -> download was placed into a paused state (including if it was already paused)
    • isPaused

      boolean isPaused()
    • stopPausedDownload

      boolean stopPausedDownload()
    • resume

      void resume()
    • resume

      boolean resume(int target_state)
      resume the download and wait until it reaches the target state. It may fail to reach this state (e.g. goes into an error state). It will however block if it looks like progress towards the state is being made (allocating/checking)
      Parameters:
      target_state -
      Returns:
      whether or not the state was reached
    • getTCPListeningPortNumber

      int getTCPListeningPortNumber()
    • getAutoResumeTime

      long getAutoResumeTime()
    • setAutoResumeTime

      default void setAutoResumeTime(long time)
    • getGlobalManager

      GlobalManager getGlobalManager()
    • getDiskManager

      DiskManager getDiskManager()
    • getDiskManagerPiecesSnapshot

      DiskManagerPiece[] getDiskManagerPiecesSnapshot()
    • getDiskManagerFileInfo

      DiskManagerFileInfo[] getDiskManagerFileInfo()
      Deprecated.
      use getDiskManagerFileInfoSet() instead
    • getDiskManagerFileInfoSet

      DiskManagerFileInfoSet getDiskManagerFileInfoSet()
    • getNumFileInfos

      int getNumFileInfos()
    • getPeerManager

      PEPeerManager getPeerManager()
    • getDownloadState

      DownloadManagerState getDownloadState()
    • getTorrent

      TOTorrent getTorrent()
    • getTrackerClient

      TRTrackerAnnouncer getTrackerClient()
    • requestTrackerAnnounce

      void requestTrackerAnnounce(boolean immediate)
    • requestTrackerScrape

      void requestTrackerScrape(boolean immediate)
    • getTrackerScrapeResponse

      TRTrackerScraperResponse getTrackerScrapeResponse()
    • getGoodTrackerScrapeResponses

      List<TRTrackerScraperResponse> getGoodTrackerScrapeResponses()
    • setTrackerScrapeResponse

      void setTrackerScrapeResponse(TRTrackerScraperResponse response)
    • getDisplayName

      String getDisplayName()
    • getInternalName

      String getInternalName()
      returns a name based on the torrent hash or an empty string if torrent invalid
      Returns:
    • getSize

      long getSize()
    • getTorrentFileName

      String getTorrentFileName()
      This includes the full path to the torrent file.
      Returns:
    • setTorrentFileName

      void setTorrentFileName(String string)
    • getAbsoluteSaveLocation

      File getAbsoluteSaveLocation()
      Returns the file location where we save the torrent, this includes the parent directory and the actual file name.
    • getSaveLocation

      File getSaveLocation()
    • setTorrentSaveDir

      default void setTorrentSaveDir(String sPath)
      Deprecated.
      Use setTorrentSaveDir(FileUtil.newFile(sPath), false)
    • setTorrentSaveDir

      void setTorrentSaveDir(File _new_location, boolean locationIncludesName)
      changes the save directory. Only call this if you know what you are doing!!!!

      When locationIncludesName, torrent name will also change (Data files will be stored under new_location)
      When !locationIncludesName, only save dire is changed, name remains (Data files will be stored under new_location + / + old_location.getName())

    • isForceStart

      boolean isForceStart()
    • setForceStart

      void setForceStart(boolean forceStart)
    • isPersistent

      boolean isPersistent()
    • isDownloadComplete

      boolean isDownloadComplete(boolean bIncludingDND)
      Retrieves whether the download is complete
      Parameters:
      bIncludingDND - true- include files marked as Do Not Download.
      false- don't include files marked DND.

      If there are DND files and you choose to include DND in the calculation, false will always be returned.

      Returns:
      whether download is complete
    • checkLightSeeding

      void checkLightSeeding(boolean full_sync)
    • getTrackerStatus

      String getTrackerStatus()
    • getTrackerTime

      int getTrackerTime()
      When the next call to the tracker will occur (in seconds)
    • getTorrentComment

      String getTorrentComment()
    • getTorrentCreatedBy

      String getTorrentCreatedBy()
    • getTorrentCreationDate

      long getTorrentCreationDate()
    • getNbPieces

      int getNbPieces()
    • getPieceLength

      String getPieceLength()
    • getNbSeeds

      int getNbSeeds()
    • getNbPeers

      int getNbPeers()
    • filesExist

      default boolean filesExist(boolean expected_to_be_allocated)
      Checks if all the files the user wants to download from this torrent actually exist on their filesystem.

      If a file does not exist, the download will be set to error state.

      Parameters:
      expected_to_be_allocated - if this is false and allocation hasn't been attempted then the method will return with false without marking the download as in an error state
      Returns:
      Whether all the non-skipped (non-DND) files exist
    • filesExist

      boolean filesExist(boolean expected_to_be_allocated, boolean test_only)
    • setErrorState

      void setErrorState(int errorType, String errorDetails, int errorFlags)
      Download must be stopped - used at start-of-day to recover error state
      Parameters:
      errorType -
      errorDetails -
    • getErrorDetails

      String getErrorDetails()
    • getErrorType

      int getErrorType()
    • getErrorFlags

      int getErrorFlags()
    • getStats

    • getPosition

      int getPosition()
    • setPosition

      void setPosition(int newPosition)
    • getAssumedComplete

      boolean getAssumedComplete()
      Retrieve whether this download is assumed complete.

      Assumed complete status is kept while the torrent is in a non-running state, even if it has no data.

      When the torrent starts up, the real complete level will be checked, and if the torrent actually does have missing data, the download will be thrown into error state.

      Only a forced-recheck should clear this flag.

    • requestAssumedCompleteMode

      boolean requestAssumedCompleteMode()
      Will set this download to be "assumed complete" for if the download is already complete (excluding DND)
      Returns:
      true- success; false- failure, download not complete
    • getHealthStatus

      int getHealthStatus()
      Returns:
      the wealthy status of this download
    • getNATStatus

      Object[] getNATStatus()
      See plugin ConnectionManager.NAT_ constants for return values
      Returns:
    • saveResumeData

      void saveResumeData()
      persist resume data
    • saveDownload

      void saveDownload(boolean interim)
      persist any general download related information, excluding resume data which is managed separately by saveResumeData
    • getUserData

      Object getUserData(Object key)
      To retreive arbitrary objects against this object.
    • setUserData

      void setUserData(Object key, Object value)
      To store arbitrary objects against this object.
    • isDataAlreadyAllocated

      boolean isDataAlreadyAllocated()
      Determine whether disk allocation has already been done. Used for checking if data is missing on a previously-loaded torrent.
      Returns:
      true if data files have already been allocated
    • setDataAlreadyAllocated

      void setDataAlreadyAllocated(boolean already_allocated)
      Set whether data allocation has already been done, so we know when to allocate and when to throw a missing-data error message.
      Parameters:
      already_allocated -
    • setSeedingRank

      void setSeedingRank(Download.SeedingRank rank)
    • getSeedingRank

      Download.SeedingRank getSeedingRank()
    • isSwarmMerging

      boolean isSwarmMerging()
    • getSwarmMergingInfo

      String getSwarmMergingInfo()
    • setMaxUploads

      void setMaxUploads(int max_slots)
    • getMaxUploads

      int getMaxUploads()
    • updateAutoUploadPriority

      void updateAutoUploadPriority(Object key, boolean inc)
    • getEffectiveUploadPriority

      int getEffectiveUploadPriority()
    • getEffectiveMaxUploads

      int getEffectiveMaxUploads()
      Returns the max uploads depending on whether the download is seeding and it has a separate rate for this
      Returns:
    • getEffectiveUploadRateLimitBytesPerSecond

      int getEffectiveUploadRateLimitBytesPerSecond()
      returns the currently in force upload speed limit which may vary from the stats. value as this gives the fixed per-torrent limit
      Returns:
    • setCryptoLevel

      void setCryptoLevel(int level)
    • getCryptoLevel

      int getCryptoLevel()
    • getMoveProgress

      long[] getMoveProgress()
      Progress of a move operation
      Returns:
      null: not moving otherwise [ 0->1000, size ]
    • moveDataFiles

      void moveDataFiles(File new_parent_dir) throws DownloadManagerException
      Move data files to new location. Torrent must be in stopped/error state
      Parameters:
      new_parent_dir -
      Throws:
      DownloadManagerException
    • moveDataFilesLive

      void moveDataFilesLive(File new_parent_dir) throws DownloadManagerException
      At some point someone made the file-move operations stop+restart the download when it was designed to work without doing this (see move-on-complete for example). As I don't know the reason for this change I've (parg) added a new method to do this in the hope that we might in time migrate back to the 'proper' behaviour. grrr
      Parameters:
      new_parent_dir -
      Throws:
      DownloadManagerException
    • copyDataFiles

      void copyDataFiles(File parent_dir, CoreOperationTask.ProgressCallback progress) throws DownloadManagerException
      Throws:
      DownloadManagerException
    • renameDownload

      void renameDownload(String new_name) throws DownloadManagerException
      Rename the download - this means the name of the file being downloaded (for single file torrents), or the name of the directory holding the files (in a multi-file torrent). This does not alter the displayed name of the download.
      Parameters:
      new_name -
      Throws:
      DownloadManagerException
    • moveDataFiles

      void moveDataFiles(File new_parent_dir, String new_name) throws DownloadManagerException
      Move the files and rename a download in one go. For convenience - either argument can be null, but not both.
      Parameters:
      new_parent_dir - new location to move torrent data files to. If null, and simple torrent, torrent data file will be renamed new_name. If null, and not simple torrent, torrent end path will be changed to new_name.
      new_name - For simple torrent, changes the filename of the downloaded file. For non-simple torrent, changes the end path for the downloaded files. If null, torrent data files will be moved to new_parent_dir, with a subfolder of the existing name.
      Throws:
      DownloadManagerException
      See Also:
    • moveTorrentFile

      void moveTorrentFile(File new_parent_dir) throws DownloadManagerException
      Move torrent file to new location. Download must be stopped/error
      Parameters:
      new_parent_dir -
      Throws:
      DownloadManagerException
    • isInDefaultSaveDir

      boolean isInDefaultSaveDir()
      Returns true if the download is being saved to one of the default save directories.
      Since:
      2.5.0.2
    • getCreationTime

      long getCreationTime()
      gives the time this download was created (not the torrent but the download itself)
      Returns:
    • setCreationTime

      void setCreationTime(long t)
    • setAnnounceResult

      void setAnnounceResult(DownloadAnnounceResult result)
    • setScrapeResult

      void setScrapeResult(DownloadScrapeResult result)
    • isUnauthorisedOnTracker

      boolean isUnauthorisedOnTracker()
    • isTrackerError

      boolean isTrackerError()
    • getExtendedMessagingMode

      int getExtendedMessagingMode()
      Returns:
      messaging mode = az, lt or bt
    • destroy

      void destroy(boolean is_duplicate)
      Indicates that the download manager is no longer needed
      Parameters:
      is_duplicate - indicates whether this dm is being destroyed because it is a duplicate
    • isDestroyed

      boolean isDestroyed()
    • getCurrentPieces

      PEPiece[] getCurrentPieces()
    • getCurrentPeers

      PEPeer[] getCurrentPeers()
    • getTrackerPeerSources

      List<TrackerPeerSource> getTrackerPeerSources()
    • seedPieceRecheck

      boolean seedPieceRecheck()
      Gives the download an opportunity to schedule seeding mode piece rechecks if desired
      Returns:
      true if a piece has been rechecked
    • addRateLimiter

      void addRateLimiter(LimitedRateGroup group, boolean upload)
    • getRateLimiters

      LimitedRateGroup[] getRateLimiters(boolean upload)
    • removeRateLimiter

      void removeRateLimiter(LimitedRateGroup group, boolean upload)
    • addListener

      void addListener(DownloadManagerListener listener, boolean triggerStateChange)
      Parameters:
      listener -
      triggerStateChange -
      Since:
      3.1.1.1
    • addListener

      void addListener(DownloadManagerListener listener)
    • removeListener

      void removeListener(DownloadManagerListener listener)
    • addTrackerListener

      void addTrackerListener(DownloadManagerTrackerListener listener)
    • removeTrackerListener

      void removeTrackerListener(DownloadManagerTrackerListener listener)
    • addPeerListener

      void addPeerListener(DownloadManagerPeerListener listener)
    • addPeerListener

      void addPeerListener(DownloadManagerPeerListener listener, boolean bDispatchForExisting)
    • removePeerListener

      void removePeerListener(DownloadManagerPeerListener listener)
    • addPieceListener

      void addPieceListener(DownloadManagerPieceListener listener)
    • addPieceListener

      void addPieceListener(DownloadManagerPieceListener listener, boolean bDispatchForExisting)
    • removePieceListener

      void removePieceListener(DownloadManagerPieceListener listener)
    • addDiskListener

      void addDiskListener(DownloadManagerDiskListener listener)
    • removeDiskListener

      void removeDiskListener(DownloadManagerDiskListener listener)
    • getActivationCount

      int getActivationCount()
    • addActivationListener

      void addActivationListener(DownloadManagerActivationListener listener)
    • removeActivationListener

      void removeActivationListener(DownloadManagerActivationListener listener)
    • addTPSListener

      void addTPSListener(DownloadManagerTPSListener listener)
    • informTPSChanged

      void informTPSChanged()
    • removeTPSListener

      void removeTPSListener(DownloadManagerTPSListener listener)
    • generateEvidence

      void generateEvidence(IndentWriter writer, boolean full)
    • getStorageType

      int[] getStorageType(DiskManagerFileInfo[] infos)
    • canMoveDataFiles

      boolean canMoveDataFiles()
      Since:
      3.0.5.1
    • rename

      void rename(String new_name) throws DownloadManagerException
      Renames the save file, torrent file and the displayed name.
      Throws:
      DownloadManagerException
    • renameTorrent

      void renameTorrent(String new_name) throws DownloadManagerException
      Throws:
      DownloadManagerException
      Since:
      3.0.5.1
    • renameTorrentSafe

      void renameTorrentSafe(String name) throws DownloadManagerException
      Same as renameTorrent, but appends numbers if torrent already exists
      Throws:
      DownloadManagerException
      Since:
      4.2.0.9
    • moveTorrentFile

      void moveTorrentFile(File parent_dir, String new_name) throws DownloadManagerException
      Throws:
      DownloadManagerException
      Since:
      3.0.5.1
    • setTorrentFile

      void setTorrentFile(File new_parent_dir, String new_name) throws DownloadManagerException
      Sets the torrent file name (will perform a move of the torrent file) - this shouldn't be used unless you know what you are doing (it requires the download to be stopped!) - it is safer to use moveTorrentFile instead.
      Throws:
      DownloadManagerException
      Since:
      3.0.5.3
    • canExportDownload

      boolean canExportDownload()
      Parameters:
      event_type -
      Since:
      1.2.0.1
    • exportDownload

      void exportDownload(File parent_dir) throws DownloadManagerException
      Throws:
      DownloadManagerException
    • fireGlobalManagerEvent

      default void fireGlobalManagerEvent(int event_type)
    • fireGlobalManagerEvent

      void fireGlobalManagerEvent(int event_type, Object event_data)
    • setFilePriorities

      void setFilePriorities(DiskManagerFileInfo[] fileInfos, int type)
      Sets the priority for an array for files
      Parameters:
      fileInfos -
      type -
      Since:
      5.6.2.1
    • requestAttention

      void requestAttention()