Class Snark

    • Method Detail

      • startTorrent

        public void startTorrent()
        Start up contacting peers and querying the tracker. Blocks if tunnel is not yet open.
        Throws:
        RuntimeException - via fatal()
        Snark.RouterException - via fatalRouter()
      • stopTorrent

        public void stopTorrent()
        Stop contacting the tracker and talking with peers
      • stopTorrent

        public void stopTorrent​(boolean fast)
        Stop contacting the tracker and talking with peers
        Parameters:
        fast - if true, limit the life of the unannounce threads
        Since:
        0.9.1
      • getName

        public String getName()
        Returns:
        file name of .torrent file (should be full absolute path), or a fake name if in magnet mode.
        Since:
        0.8.4
      • getBaseName

        public String getBaseName()
        Returns:
        base name of torrent [filtered version of getMetaInfo.getName()], or a fake name if in magnet mode
        Since:
        0.8.4
      • getID

        public byte[] getID()
        Returns:
        always will be valid even in magnet mode
        Since:
        0.8.4
      • getInfoHash

        public byte[] getInfoHash()
        Returns:
        always will be valid even in magnet mode
        Since:
        0.8.4
      • getMetaInfo

        public MetaInfo getMetaInfo()
        Returns:
        may be null if in magnet mode
        Since:
        0.8.4
      • getStorage

        public Storage getStorage()
        Returns:
        may be null if in magnet mode
        Since:
        0.8.4
      • isStopped

        public boolean isStopped()
        Since:
        0.8.4
      • isStarting

        public boolean isStarting()
        Startup in progress.
        Since:
        0.9.1
      • setStarting

        public void setStarting()
        Set startup in progress.
        Since:
        0.9.1
      • isChecking

        public boolean isChecking()
        File checking in progress.
        Since:
        0.9.3
      • getCheckingProgress

        public double getCheckingProgress()
        If checking is in progress, return completion 0.0 ... 1.0, else return 1.0.
        Since:
        0.9.23
      • isAllocating

        public boolean isAllocating()
        Disk allocation (ballooning) in progress.
        Since:
        0.9.3
      • getDownloadRate

        public long getDownloadRate()
        Since:
        0.8.4
      • getUploadRate

        public long getUploadRate()
        Since:
        0.8.4
      • getDownloaded

        public long getDownloaded()
        Since:
        0.8.4
      • getUploaded

        public long getUploaded()
        Since:
        0.8.4
      • getPeerCount

        public int getPeerCount()
        Since:
        0.8.4
      • getPeerList

        public List<Peer> getPeerList()
        Since:
        0.8.4
      • getTrackerProblems

        public String getTrackerProblems()
        Not HTML escaped.
        Returns:
        String returned from tracker, or null if no error
        Since:
        0.8.4
      • setTrackerProblems

        public void setTrackerProblems​(String p)
        Parameters:
        p - tracker error string or null
        Since:
        0.8.4
      • getTrackerSeenPeers

        public int getTrackerSeenPeers()
        Returns:
        count returned from tracker
        Since:
        0.8.4
      • setTrackerSeenPeers

        public void setTrackerSeenPeers​(int p)
        Since:
        0.8.4
      • updatePiecePriorities

        public void updatePiecePriorities()
        Since:
        0.8.4
      • getTotalLength

        public long getTotalLength()
        Returns:
        total of all torrent files, or total of metainfo file if fetching magnet, or -1
        Since:
        0.8.4
      • getRemainingLength

        public long getRemainingLength()
        Bytes not yet in storage. Does NOT account for skipped files.
        Returns:
        exact value. or -1 if no storage yet. getNeeded() * pieceLength(0) isn't accurate if last piece is still needed.
        Since:
        0.8.9
      • getNeededLength

        public long getNeededLength()
        Bytes still wanted. DOES account for (i.e. does not include) skipped files. FIXME -1 when not running.
        Returns:
        exact value. or -1 if no storage yet or when not running.
        Since:
        0.9.1
      • getSkippedLength

        public long getSkippedLength()
        Bytes not received and set to skipped. This is not the same as the total of all skipped files, since pieces may span multiple files.
        Returns:
        exact value. or 0 if no storage yet.
        Since:
        0.9.24
      • getNeeded

        public long getNeeded()
        Does not account (i.e. includes) for skipped files.
        Returns:
        number of pieces still needed (magnet mode or not), or -1 if unknown
        Since:
        0.8.4
      • getPieceLength

        public int getPieceLength​(int p)
        Parameters:
        p - the piece number
        Returns:
        metainfo piece length or 16K if fetching magnet
        Since:
        0.8.4
      • getPieces

        public int getPieces()
        Returns:
        number of pieces
        Since:
        0.8.4
      • restartAcceptor

        public boolean restartAcceptor()
        Returns:
        true if restarted
        Since:
        0.8.4
      • getTrackerURL

        public String getTrackerURL()
        Returns:
        trackerURL string from magnet-mode constructor, may be null
        Since:
        0.8.4
      • isAutoStoppable

        public boolean isAutoStoppable()
        Since:
        0.9.9
      • setAutoStoppable

        public void setAutoStoppable​(boolean yes)
        Since:
        0.9.9
      • gotMetaInfo

        public void gotMetaInfo​(PeerCoordinator coordinator,
                                MetaInfo metainfo)
        Called when the PeerCoordinator got the MetaInfo via magnet. CoordinatorListener. Create the storage, tell SnarkManager, and give the storage back to the coordinator.
        Specified by:
        gotMetaInfo in interface CoordinatorListener
        Throws:
        RuntimeException - via fatal()
        Since:
        0.8.4
      • storageChecked

        public void storageChecked​(Storage storage,
                                   int num,
                                   boolean checked)
        Description copied from interface: StorageListener
        Called when storage is being checked and the num piece of that total pieces has been checked. When the piece hash matches the expected piece hash checked will be true, otherwise it will be false.
        Specified by:
        storageChecked in interface StorageListener
      • storageAllChecked

        public void storageAllChecked​(Storage storage)
        Description copied from interface: StorageListener
        Called when all pieces in the storage have been checked. Does not mean that the storage is complete, just that the state of the storage is known.
        Specified by:
        storageAllChecked in interface StorageListener
      • setWantedPieces

        public void setWantedPieces​(Storage storage)
        Description copied from interface: StorageListener
        Reset the peer's wanted pieces table Call after the storage double-check fails
        Specified by:
        setWantedPieces in interface StorageListener
      • shutdown

        public void shutdown()
        SnarkSnutdown callback unused
        Specified by:
        shutdown in interface ShutdownListener
      • overUpBWLimit

        public boolean overUpBWLimit​(long total)
        Is a particular peer who has this recent download rate (in Bps) over our upstream bandwidth limit?
        Specified by:
        overUpBWLimit in interface CoordinatorListener
      • getRPCID

        public int getRPCID()
        A unique ID for this torrent, useful for RPC
        Returns:
        positive value unless you wrap around
        Since:
        0.9.30
      • getStartedTime

        public long getStartedTime()
        When did we start this torrent For RPC
        Returns:
        0 if not started before. Not cleared when stopped.
        Since:
        0.9.30
      • getComments

        public CommentSet getComments()
        The current comment set for this torrent. Not a copy. Caller MUST synch on the returned object for all operations.
        Returns:
        may be null if none
        Since:
        0.9.31
      • addComments

        public boolean addComments​(List<Comment> comments)
        Add to the current comment set for this torrent, creating it if it didn't previously exist.
        Returns:
        true if the set changed
        Since:
        0.9.31