Interface DownloadManager

    • Method Detail

      • 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()
      • 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​(java.util.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​(java.lang.String reason)
      • getStopReason

        java.lang.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()
      • getTCPListeningPortNumber

        int getTCPListeningPortNumber()
      • getAutoResumeTime

        long getAutoResumeTime()
      • setAutoResumeTime

        default void setAutoResumeTime​(long time)
      • getDiskManagerPiecesSnapshot

        DiskManagerPiece[] getDiskManagerPiecesSnapshot()
      • getDiskManagerFileInfo

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

        int getNumFileInfos()
      • requestTrackerAnnounce

        void requestTrackerAnnounce​(boolean immediate)
      • requestTrackerScrape

        void requestTrackerScrape​(boolean immediate)
      • getDisplayName

        java.lang.String getDisplayName()
      • getInternalName

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

        long getSize()
      • getTorrentFileName

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

        void setTorrentFileName​(java.lang.String string)
      • getAbsoluteSaveLocation

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

        java.io.File getSaveLocation()
      • setTorrentSaveDir

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

        void setTorrentSaveDir​(java.io.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

        java.lang.String getTrackerStatus()
      • getTrackerTime

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

        java.lang.String getTorrentComment()
      • getTorrentCreatedBy

        java.lang.String getTorrentCreatedBy()
      • getTorrentCreationDate

        long getTorrentCreationDate()
      • getNbPieces

        int getNbPieces()
      • getPieceLength

        java.lang.String getPieceLength()
      • getNbSeeds

        int getNbSeeds()
      • getNbPeers

        int getNbPeers()
      • filesExist

        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
      • setErrorState

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

        java.lang.String getErrorDetails()
      • getErrorType

        int getErrorType()
      • getErrorFlags

        int getErrorFlags()
      • 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

        java.lang.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

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

        void setUserData​(java.lang.Object key,
                         java.lang.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 -
      • isSwarmMerging

        boolean isSwarmMerging()
      • getSwarmMergingInfo

        java.lang.String getSwarmMergingInfo()
      • setMaxUploads

        void setMaxUploads​(int max_slots)
      • getMaxUploads

        int getMaxUploads()
      • updateAutoUploadPriority

        void updateAutoUploadPriority​(java.lang.Object key,
                                      boolean inc)
      • 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 ]
      • moveDataFilesLive

        void moveDataFilesLive​(java.io.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
      • renameDownload

        void renameDownload​(java.lang.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​(java.io.File new_parent_dir,
                           java.lang.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:
        moveDataFiles(File), renameDownload(String)
      • 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)
      • 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()
      • 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)
      • removeRateLimiter

        void removeRateLimiter​(LimitedRateGroup group,
                               boolean upload)
      • addListener

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

        int getActivationCount()
      • informTPSChanged

        void informTPSChanged()
      • generateEvidence

        void generateEvidence​(IndentWriter writer)
      • canMoveDataFiles

        boolean canMoveDataFiles()
        Since:
        3.0.5.1
      • setTorrentFile

        void setTorrentFile​(java.io.File new_parent_dir,
                            java.lang.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
      • fireGlobalManagerEvent

        void fireGlobalManagerEvent​(int event_type)
      • 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()