Class TOTorrentImpl

java.lang.Object
com.biglybt.core.logging.LogRelation
com.biglybt.core.torrent.impl.TOTorrentImpl
All Implemented Interfaces:
TOTorrent
Direct Known Subclasses:
TOTorrentCreateImpl, TOTorrentDeserialiseImpl

public class TOTorrentImpl extends LogRelation implements TOTorrent
  • Field Details

  • Constructor Details

    • TOTorrentImpl

      protected TOTorrentImpl()
      Constructor for deserialisation
    • TOTorrentImpl

      protected TOTorrentImpl(String _torrent_name, URL _announce_url, boolean _simple_torrent)
      Constructor for creation
  • Method Details

    • addGlobalListener

      public static void addGlobalListener(TOTorrentListener listener)
    • removeGlobalListener

      public static void removeGlobalListener(TOTorrentListener listener)
    • setConstructed

      protected void setConstructed() throws TOTorrentException
      Throws:
      TOTorrentException
    • fixupRootHashes

      protected void fixupRootHashes()
    • serialiseToBEncodedFile

      public void serialiseToBEncodedFile(File output_file) throws TOTorrentException
      Description copied from interface: TOTorrent
      This method will serialise a torrent using the standard "b-encoding" mechanism into a file
      Specified by:
      serialiseToBEncodedFile in interface TOTorrent
      Throws:
      TOTorrentException
    • serialiseToByteArray

      protected byte[] serialiseToByteArray() throws TOTorrentException
      Throws:
      TOTorrentException
    • serialiseToMap

      public Map serialiseToMap() throws TOTorrentException
      Description copied from interface: TOTorrent
      This method will serialise a torrent into a Map consistent with that used by the "b-encoding" routines defined elsewhere
      Specified by:
      serialiseToMap in interface TOTorrent
      Returns:
      Throws:
      TOTorrentException
    • serialiseToXMLFile

      public void serialiseToXMLFile(File file) throws TOTorrentException
      Description copied from interface: TOTorrent
      This method will serialise a torrent using an XML encoding to a file
      Specified by:
      serialiseToXMLFile in interface TOTorrent
      Throws:
      TOTorrentException
    • getTorrentType

      public int getTorrentType()
      Specified by:
      getTorrentType in interface TOTorrent
      Returns:
      One of the TT_ constants
    • setTorrentType

      protected void setTorrentType(int type)
    • isExportable

      public boolean isExportable()
      Description copied from interface: TOTorrent
      Is the torrent in a fit state to export and share?
      Specified by:
      isExportable in interface TOTorrent
      Returns:
    • updateExportability

      public boolean updateExportability(TOTorrent from)
      Description copied from interface: TOTorrent
      Propagate exportability from another torrent to this one - has to have same hash. Required because an internal torrent can become exportable whilst the 'saved' (unexportable) original torrent is sitting there untouched...
      Specified by:
      updateExportability in interface TOTorrent
      Returns:
    • getName

      public byte[] getName()
      Description copied from interface: TOTorrent
      Get the name of the torrent
      Specified by:
      getName in interface TOTorrent
      Returns:
    • setName

      protected void setName(byte[] _name)
    • getUTF8Name

      public String getUTF8Name()
      Description copied from interface: TOTorrent
      Retrieves the utf8 name of the torrent ONLY if the torrent specified one in it's info map. Otherwise, returns null (you'll have to use getName() and decode it yourself)
      Specified by:
      getUTF8Name in interface TOTorrent
    • setNameUTF8

      protected void setNameUTF8(byte[] _name)
    • isSimpleTorrent

      public boolean isSimpleTorrent()
      Description copied from interface: TOTorrent
      A "simple torrent" is one that consists of a single file on its own (i.e. not in a nested directory).
      Specified by:
      isSimpleTorrent in interface TOTorrent
      Returns:
    • getComment

      public byte[] getComment()
      Description copied from interface: TOTorrent
      Comment is an optional torrent property
      Specified by:
      getComment in interface TOTorrent
      Returns:
    • setComment

      protected void setComment(byte[] _comment)
    • setComment

      public void setComment(String _comment)
      Specified by:
      setComment in interface TOTorrent
    • getAnnounceURL

      public URL getAnnounceURL()
      Description copied from interface: TOTorrent
      A torrent must have a URL that identifies the tracker. This method returns it. However an extension to this exists to allow multiple trackers, and their backups, to be defined. See below
      Specified by:
      getAnnounceURL in interface TOTorrent
      Returns:
    • setAnnounceURL

      public boolean setAnnounceURL(URL url)
      Specified by:
      setAnnounceURL in interface TOTorrent
      Returns:
      true-changed; false-not changed
    • isDecentralised

      public boolean isDecentralised()
      Specified by:
      isDecentralised in interface TOTorrent
    • getCreationDate

      public long getCreationDate()
      Description copied from interface: TOTorrent
      Gets the creation date of the torrent. Optional property, 0 returned if not set
      Specified by:
      getCreationDate in interface TOTorrent
      Returns:
    • setCreationDate

      public void setCreationDate(long _creation_date)
      Specified by:
      setCreationDate in interface TOTorrent
    • setCreatedBy

      public void setCreatedBy(byte[] _created_by)
      Specified by:
      setCreatedBy in interface TOTorrent
    • setCreatedBy

      protected void setCreatedBy(String _created_by)
    • getCreatedBy

      public byte[] getCreatedBy()
      Specified by:
      getCreatedBy in interface TOTorrent
    • isCreated

      public boolean isCreated()
      Specified by:
      isCreated in interface TOTorrent
    • getHash

      public byte[] getHash() throws TOTorrentException
      Description copied from interface: TOTorrent
      For a V1 or hybrid torrent this returns the SHA1 hash For a V2 only torrent it returns the truncated SHA256 hash
      Specified by:
      getHash in interface TOTorrent
      Returns:
      Throws:
      TOTorrentException
    • getFullHash

      public byte[] getFullHash(int type) throws TOTorrentException
      Specified by:
      getFullHash in interface TOTorrent
      Returns:
      SHA1 hash for v1/hybrid torrents, SHA256 hash for hybrid/v2 torrents
      Throws:
      TOTorrentException
    • getHashWrapper

      public HashWrapper getHashWrapper() throws TOTorrentException
      Description copied from interface: TOTorrent
      convenience method to get a wrapped hash for performance purposes
      Specified by:
      getHashWrapper in interface TOTorrent
      Returns:
      Throws:
      TOTorrentException
    • hasSameHashAs

      public boolean hasSameHashAs(TOTorrent other)
      Description copied from interface: TOTorrent
      compares two torrents by hash
      Specified by:
      hasSameHashAs in interface TOTorrent
      Returns:
    • setHashFromInfo

      protected void setHashFromInfo(Map<String,Object> info) throws TOTorrentException
      Throws:
      TOTorrentException
    • selectHybridHashType

      public TOTorrent selectHybridHashType(int type) throws TOTorrentException
      Specified by:
      selectHybridHashType in interface TOTorrent
      Throws:
      TOTorrentException
    • setHashOverride

      public void setHashOverride(byte[] hash) throws TOTorrentException
      Specified by:
      setHashOverride in interface TOTorrent
      Throws:
      TOTorrentException
    • getHashOverride

      protected byte[] getHashOverride()
    • setPrivate

      public void setPrivate(boolean _private_torrent) throws TOTorrentException
      Description copied from interface: TOTorrent
      Note - changing the private attribute CHANGES THE TORRENT HASH
      Specified by:
      setPrivate in interface TOTorrent
      Throws:
      TOTorrentException
    • getPrivate

      public boolean getPrivate()
      Specified by:
      getPrivate in interface TOTorrent
    • setSource

      public void setSource(String str) throws TOTorrentException
      Description copied from interface: TOTorrent
      Note - changing the source CHANGES THE TORRENT HASH
      Specified by:
      setSource in interface TOTorrent
      Throws:
      TOTorrentException
    • getSource

      public String getSource()
      Specified by:
      getSource in interface TOTorrent
    • getAnnounceURLGroup

      public TOTorrentAnnounceURLGroup getAnnounceURLGroup()
      Description copied from interface: TOTorrent
      When a group of sets of trackers is defined their URLs are accessed via this method
      Specified by:
      getAnnounceURLGroup in interface TOTorrent
      Returns:
      the group, always present, which may have 0 members
    • addTorrentAnnounceURLSet

      protected void addTorrentAnnounceURLSet(URL[] urls)
    • getSize

      public long getSize()
      Specified by:
      getSize in interface TOTorrent
    • getPieceLength

      public long getPieceLength()
      Description copied from interface: TOTorrent
      Returns the piece length used for the torrent
      Specified by:
      getPieceLength in interface TOTorrent
      Returns:
    • setPieceLength

      protected void setPieceLength(long _length)
    • getNumberOfPieces

      public int getNumberOfPieces()
      Specified by:
      getNumberOfPieces in interface TOTorrent
    • getPieces

      public byte[][] getPieces()
      Description copied from interface: TOTorrent
      This method provides access to the SHA1/SHA256 hash values (20/32 bytes each) that correspond to the pieces of the torrent.
      Specified by:
      getPieces in interface TOTorrent
      Returns:
    • setPieces

      public void setPieces(byte[][] _pieces)
      Description copied from interface: TOTorrent
      This method exists to support the temporary discarding of piece hashes to conserver memory. It should only be used with care!
      Specified by:
      setPieces in interface TOTorrent
    • setPiece

      protected void setPiece(int index, byte[] piece)
    • getFileCount

      public int getFileCount()
      Specified by:
      getFileCount in interface TOTorrent
    • getFiles

      public TOTorrentFileImpl[] getFiles()
      Description copied from interface: TOTorrent
      A torrent consists of one or more files. These are accessed via this method.
      Specified by:
      getFiles in interface TOTorrent
      Returns:
    • setFiles

      protected void setFiles(TOTorrentFileImpl[] _files)
    • getSimpleTorrent

      protected boolean getSimpleTorrent()
    • setSimpleTorrent

      protected void setSimpleTorrent(boolean _simple_torrent)
    • getAdditionalProperties

      protected Map getAdditionalProperties()
    • setAdditionalStringProperty

      public void setAdditionalStringProperty(String name, String value)
      Description copied from interface: TOTorrent
      The additional properties are used for holding non-core data for Azureus' own user
      Specified by:
      setAdditionalStringProperty in interface TOTorrent
      Parameters:
      name - name of the property (e.g. "encoding")
      value - value. This will be encoded with default encoding
    • getAdditionalStringProperty

      public String getAdditionalStringProperty(String name)
      Specified by:
      getAdditionalStringProperty in interface TOTorrent
    • setAdditionalByteArrayProperty

      public void setAdditionalByteArrayProperty(String name, byte[] value)
      Specified by:
      setAdditionalByteArrayProperty in interface TOTorrent
    • setAdditionalProperty

      public void setAdditionalProperty(String name, Object value)
      Description copied from interface: TOTorrent
      set an arbitrary property. Make sure its compatible with bencoding!
      Specified by:
      setAdditionalProperty in interface TOTorrent
    • getAdditionalByteArrayProperty

      public byte[] getAdditionalByteArrayProperty(String name)
      Specified by:
      getAdditionalByteArrayProperty in interface TOTorrent
    • setAdditionalLongProperty

      public void setAdditionalLongProperty(String name, Long value)
      Specified by:
      setAdditionalLongProperty in interface TOTorrent
    • getAdditionalLongProperty

      public Long getAdditionalLongProperty(String name)
      Specified by:
      getAdditionalLongProperty in interface TOTorrent
    • setAdditionalListProperty

      public void setAdditionalListProperty(String name, List value)
      Specified by:
      setAdditionalListProperty in interface TOTorrent
    • getAdditionalListProperty

      public List getAdditionalListProperty(String name)
      Specified by:
      getAdditionalListProperty in interface TOTorrent
    • setAdditionalMapProperty

      public void setAdditionalMapProperty(String name, Map value)
      Specified by:
      setAdditionalMapProperty in interface TOTorrent
    • getAdditionalMapProperty

      public Map getAdditionalMapProperty(String name)
      Specified by:
      getAdditionalMapProperty in interface TOTorrent
    • getAdditionalProperty

      public Object getAdditionalProperty(String name)
      Specified by:
      getAdditionalProperty in interface TOTorrent
    • removeAdditionalProperty

      public void removeAdditionalProperty(String name)
      Specified by:
      removeAdditionalProperty in interface TOTorrent
    • removeAdditionalProperties

      public void removeAdditionalProperties()
      Description copied from interface: TOTorrent
      remove all additional properties to clear out the torrent
      Specified by:
      removeAdditionalProperties in interface TOTorrent
    • addAdditionalProperty

      protected void addAdditionalProperty(String name, Object value)
    • addAdditionalInfoProperty

      protected void addAdditionalInfoProperty(String name, Object value)
    • getAdditionalInfoProperties

      protected Map getAdditionalInfoProperties()
    • readStringFromMetaData

      protected String readStringFromMetaData(Map meta_data, String name)
    • readStringFromMetaData

      protected String readStringFromMetaData(byte[] value)
    • writeStringToMetaData

      protected void writeStringToMetaData(Map meta_data, String name, String value)
    • writeStringToMetaData

      protected byte[] writeStringToMetaData(String value)
    • anonymityTransform

      protected URL anonymityTransform(URL url)
    • print

      public void print()
      Description copied from interface: TOTorrent
      A diagnostic method for dumping the tracker contents to "stdout"
      Specified by:
      print in interface TOTorrent
    • fireChanged

      protected void fireChanged(int type, Object data)
    • addListener

      public void addListener(TOTorrentListener l)
      Specified by:
      addListener in interface TOTorrent
    • removeListener

      public void removeListener(TOTorrentListener l)
      Specified by:
      removeListener in interface TOTorrent
    • getMonitor

      public AEMonitor getMonitor()
      Specified by:
      getMonitor in interface TOTorrent
    • getRelationText

      public String getRelationText()
      Description copied from class: LogRelation
      A short description of what your class holds that can be printed by the logger
      Overrides:
      getRelationText in class LogRelation
      Returns:
    • getQueryableInterfaces

      public Object[] getQueryableInterfaces()
      Description copied from class: LogRelation
      Query this class for a reference to another class that it may hold
      Overrides:
      getQueryableInterfaces in class LogRelation
      Returns:
      If found, the class desired. Otherwise, null.