Class PEPeerControlImpl.MyPeer

    • Field Detail

      • user_data

        private final java.util.Map<java.lang.Object,​java.lang.Object> user_data
      • last_active

        private volatile long last_active
      • incoming_request_count

        private volatile int incoming_request_count
      • outgoing_request_count

        private volatile int outgoing_request_count
      • incoming_requested_pieces

        private volatile int[] incoming_requested_pieces
      • outgoing_requested_pieces

        private volatile int[] outgoing_requested_pieces
    • Constructor Detail

      • MyPeer

        private MyPeer()
    • Method Detail

      • update

        private void update()
      • setActive

        private void setActive()
      • isMyPeer

        public boolean isMyPeer()
        Description copied from interface: PEPeer
        Whether or not this is a 'dummy' peer that represents our presence in a swarm
        Specified by:
        isMyPeer in interface PEPeer
        Returns:
      • getPeerState

        public int getPeerState()
        Specified by:
        getPeerState in interface PEPeer
      • getPeerSource

        public java.lang.String getPeerSource()
        Specified by:
        getPeerSource in interface PEPeer
      • getId

        public byte[] getId()
        Specified by:
        getId in interface PEPeer
      • getIp

        public java.lang.String getIp()
        Specified by:
        getIp in interface PEPeer
      • getAlternativeIPv6

        public java.net.InetAddress getAlternativeIPv6()
        Specified by:
        getAlternativeIPv6 in interface PEPeer
        Returns:
        an ipv6 address under which the peer should be connectable if it announced one, null otherwise
      • getPort

        public int getPort()
        Description copied from interface: PEPeer
        Get the peer's local TCP connection port.
        Specified by:
        getPort in interface PEPeer
        Returns:
        local port
      • getIPHostName

        public java.lang.String getIPHostName()
        Description copied from interface: PEPeer
        Gets the host name for the IP, if possible, IP as string otherwise
        Specified by:
        getIPHostName in interface PEPeer
        Returns:
        hostname or IP
      • getTCPListenPort

        public int getTCPListenPort()
        Description copied from interface: PEPeer
        Get the TCP port this peer is listening for incoming connections on.
        Specified by:
        getTCPListenPort in interface PEPeer
        Returns:
        TCP port, or 0 if port is unknown
      • getUDPListenPort

        public int getUDPListenPort()
        Description copied from interface: PEPeer
        Get the UDP port this peer is listening for incoming connections on.
        Specified by:
        getUDPListenPort in interface PEPeer
        Returns:
        UDP port, or 0 if port is unknown
      • getUDPNonDataListenPort

        public int getUDPNonDataListenPort()
        Description copied from interface: PEPeer
        Get the UDP port this peer is listening on for non-data connections
        Specified by:
        getUDPNonDataListenPort in interface PEPeer
        Returns:
      • isPieceAvailable

        public boolean isPieceAvailable​(int pieceNumber)
        Specified by:
        isPieceAvailable in interface PEPeer
        Parameters:
        pieceNumber - int
        Returns:
        true if this peers makes this piece available
      • setSnubbed

        public void setSnubbed​(boolean b)
        Specified by:
        setSnubbed in interface PEPeer
      • isChokingMe

        public boolean isChokingMe()
        Description copied from interface: PEPeer
        Is the peer choking me.
        Specified by:
        isChokingMe in interface PEPeer
        Returns:
        true if I am choked by the peer, false if not
      • isChokedByMe

        public boolean isChokedByMe()
        Description copied from interface: PEPeer
        Am I choking the peer.
        Specified by:
        isChokedByMe in interface PEPeer
        Returns:
        true if the peer is choked, false if not
      • sendChoke

        public void sendChoke()
        Specified by:
        sendChoke in interface PEPeer
      • sendUnChoke

        public void sendUnChoke()
        Specified by:
        sendUnChoke in interface PEPeer
      • isInteresting

        public boolean isInteresting()
        Description copied from interface: PEPeer
        Am I Interested in the peer.
        Specified by:
        isInteresting in interface PEPeer
        Returns:
        true if peer is interesting, false if not
      • isInterested

        public boolean isInterested()
        Description copied from interface: PEPeer
        Is the peer Interested in me.
        Specified by:
        isInterested in interface PEPeer
        Returns:
        true if the peer is interested in me, false if not
      • isDownloadPossible

        public boolean isDownloadPossible()
        Description copied from interface: PEPeer
        checks several factors within the object so the caller wouldn't need to for convienience and speed.
        Specified by:
        isDownloadPossible in interface PEPeer
        Returns:
        true if none of several criteria indicate a request can't be made of the peer
      • isSeed

        public boolean isSeed()
        Specified by:
        isSeed in interface PEPeer
      • isRelativeSeed

        public boolean isRelativeSeed()
        Specified by:
        isRelativeSeed in interface PEPeer
        Returns:
        true if the peer is only uploading and can't use the data we have to offer (we're seeding) or we can't use the data he has to offer (we're downloading)
      • isSnubbed

        public boolean isSnubbed()
        Specified by:
        isSnubbed in interface PEPeer
      • isIncoming

        public boolean isIncoming()
        Specified by:
        isIncoming in interface PEPeer
      • getPercentDoneInThousandNotation

        public int getPercentDoneInThousandNotation()
        Description copied from interface: PEPeer
        Get the peer's torrent completion percentage in thousand-notation, i.e. 53.7% is returned as the value 0537.
        Specified by:
        getPercentDoneInThousandNotation in interface PEPeer
        Returns:
        the percentage the peer has complete
      • getClient

        public java.lang.String getClient()
        Specified by:
        getClient in interface PEPeer
      • setOptimisticUnchoke

        public void setOptimisticUnchoke​(boolean is_optimistic)
        Specified by:
        setOptimisticUnchoke in interface PEPeer
      • setUploadHint

        public void setUploadHint​(int timeToSpread)
        Specified by:
        setUploadHint in interface PEPeer
      • setUniqueAnnounce

        public void setUniqueAnnounce​(int uniquePieceNumber)
        Specified by:
        setUniqueAnnounce in interface PEPeer
      • setUploadDisabled

        public void setUploadDisabled​(java.lang.Object key,
                                      boolean disabled)
        Specified by:
        setUploadDisabled in interface PEPeer
      • setDownloadDisabled

        public void setDownloadDisabled​(java.lang.Object key,
                                        boolean disabled)
        Specified by:
        setDownloadDisabled in interface PEPeer
      • updateAutoUploadPriority

        public void updateAutoUploadPriority​(java.lang.Object key,
                                             boolean inc)
        Specified by:
        updateAutoUploadPriority in interface PEPeer
      • getData

        public java.lang.Object getData​(java.lang.String key)
        Description copied from interface: PEPeer
        To retreive arbitrary objects against a peer.
        Specified by:
        getData in interface PEPeer
      • setData

        public void setData​(java.lang.String key,
                            java.lang.Object value)
        Description copied from interface: PEPeer
        To store arbitrary objects against a peer.
        Specified by:
        setData in interface PEPeer
      • getUserData

        public java.lang.Object getUserData​(java.lang.Object key)
        Specified by:
        getUserData in interface PEPeer
      • setUserData

        public void setUserData​(java.lang.Object key,
                                java.lang.Object value)
        Description copied from interface: PEPeer
        To store arbitrary objects against a peer.
        Specified by:
        setUserData in interface PEPeer
      • getPluginConnection

        public Connection getPluginConnection()
        Description copied from interface: PEPeer
        Get the connection that backs this peer.
        Specified by:
        getPluginConnection in interface PEPeer
        Returns:
        connection
      • supportsMessaging

        public boolean supportsMessaging()
        Description copied from interface: PEPeer
        Whether or not this peer supports the advanced messaging API.
        Specified by:
        supportsMessaging in interface PEPeer
        Returns:
        true if extended messaging is supported, false if not
      • getEncryption

        public java.lang.String getEncryption()
        Description copied from interface: PEPeer
        Returns name of encryption used by the peer
        Specified by:
        getEncryption in interface PEPeer
        Returns:
      • getProtocol

        public java.lang.String getProtocol()
        Specified by:
        getProtocol in interface PEPeer
      • getSupportedMessages

        public Message[] getSupportedMessages()
        Description copied from interface: PEPeer
        Get the list of messages that this peer and us both understand.
        Specified by:
        getSupportedMessages in interface PEPeer
        Returns:
        messages available for use, or null of supported is yet unknown or unavailable
      • addReservedPieceNumber

        public void addReservedPieceNumber​(int pieceNumber)
        Description copied from interface: PEPeer
        adds the reserved piece for piece picking by this peer
        Specified by:
        addReservedPieceNumber in interface PEPeer
      • getReservedPieceNumbers

        public int[] getReservedPieceNumbers()
        Description copied from interface: PEPeer
        Get the reserved pieces for piece picking by this peer
        Specified by:
        getReservedPieceNumbers in interface PEPeer
      • getIncomingRequestedPieceNumbers

        public int[] getIncomingRequestedPieceNumbers()
        Description copied from interface: PEPeer
        get a list of piece numbers the peer has requested
        Specified by:
        getIncomingRequestedPieceNumbers in interface PEPeer
        Returns:
        list of Long() representing the piece number requested, in order
      • getOutgoingRequestedPieceNumbers

        public int[] getOutgoingRequestedPieceNumbers()
        Description copied from interface: PEPeer
        get a list of piece numbers the we have requested from peer
        Specified by:
        getOutgoingRequestedPieceNumbers in interface PEPeer
        Returns:
        list of Long() representing the piece number requested, oldest to newest
      • setSuspendedLazyBitFieldEnabled

        public void setSuspendedLazyBitFieldEnabled​(boolean enable)
        Description copied from interface: PEPeer
        Enable suspended lazy bitfield for this peer - we will appear incomplete until this is disabled, at which point (well, fairly soon after) the bitfield will be completed
        Specified by:
        setSuspendedLazyBitFieldEnabled in interface PEPeer
      • getTimeSinceConnectionEstablished

        public long getTimeSinceConnectionEstablished()
        Description copied from interface: PEPeer
        Get the time since this connection was first established. NOTE: This method will always return 0 at any time before the underlying transport is fully connected, i.e. before handshaking begins.
        Specified by:
        getTimeSinceConnectionEstablished in interface PEPeer
        Returns:
        time count in ms
      • setLastPiece

        public void setLastPiece​(int i)
        Specified by:
        setLastPiece in interface PEPeer
      • getLastPiece

        public int getLastPiece()
        Specified by:
        getLastPiece in interface PEPeer
      • isLANLocal

        public boolean isLANLocal()
        Specified by:
        isLANLocal in interface PEPeer
      • sendRequestHint

        public boolean sendRequestHint​(int piece_number,
                                       int offset,
                                       int length,
                                       int life)
        Description copied from interface: PEPeer
        Send a request hint to the peer.
        Specified by:
        sendRequestHint in interface PEPeer
        Returns:
        true if sent, false otherwise
      • getRequestHint

        public int[] getRequestHint()
        Description copied from interface: PEPeer
        Get current request hint for a given piece for this peer.
        Specified by:
        getRequestHint in interface PEPeer
        Returns:
        null if no hint int[]{ piece_number, offset, length } if hint found
      • sendStatsRequest

        public void sendStatsRequest​(java.util.Map request)
        Specified by:
        sendStatsRequest in interface PEPeer
      • setPriorityConnection

        public void setPriorityConnection​(boolean is_priority)
        Specified by:
        setPriorityConnection in interface PEPeer
      • isClosed

        public boolean isClosed()
        Specified by:
        isClosed in interface PEPeer
      • getTaggableID

        public java.lang.String getTaggableID()
        Specified by:
        getTaggableID in interface Taggable
      • getTaggableName

        public java.lang.String getTaggableName()
        Specified by:
        getTaggableName in interface Taggable
      • setTaggableTransientProperty

        public void setTaggableTransientProperty​(java.lang.String key,
                                                 java.lang.Object value)
        Specified by:
        setTaggableTransientProperty in interface Taggable