Class PeerForeignDelegate

java.lang.Object
com.biglybt.pifimpl.local.peers.PeerForeignDelegate
All Implemented Interfaces:
PEPeerTransport, PEPeer, Taggable, Taggable

public class PeerForeignDelegate extends Object implements PEPeerTransport
  • Field Details

    • _lastPiece

      protected volatile int _lastPiece
    • manager

      private final PeerManagerImpl manager
    • foreign

      private final Peer foreign
    • network_connection

      private final NetworkConnectionBase network_connection
    • create_time_mono

      private long create_time_mono
    • last_data_received_time

      private long last_data_received_time
    • last_data_message_received_time

      private long last_data_message_received_time
    • reserved_pieces

      private int[] reserved_pieces
    • consecutive_no_requests

      private int consecutive_no_requests
    • bit_flags

      private BitFlags bit_flags
    • priority_connection

      private boolean priority_connection
    • data

      private Map data
    • peer_listeners

      private HashMap<PEPeerListener,PeerListener2> peer_listeners
    • this_mon

      protected AEMonitor this_mon
    • download_disabled_set

      private Set<Object> download_disabled_set
    • is_download_disabled

      private boolean is_download_disabled
    • closed

      private volatile boolean closed
  • Constructor Details

    • PeerForeignDelegate

      protected PeerForeignDelegate(PeerManagerImpl _manager, Peer _foreign)
  • Method Details

    • 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:
    • getOutboundConnectionProgress

      public int getOutboundConnectionProgress()
      Specified by:
      getOutboundConnectionProgress in interface PEPeerTransport
    • start

      public void start()
      Description copied from interface: PEPeerTransport
      Start message processing for the peer
      Specified by:
      start in interface PEPeerTransport
    • stop

      protected void stop()
    • sendChoke

      public void sendChoke()
      Should never be called
      Specified by:
      sendChoke in interface PEPeer
      Specified by:
      sendChoke in interface PEPeerTransport
    • sendHave

      public void sendHave(int piece)
      Nothing to do if called
      Specified by:
      sendHave in interface PEPeerTransport
    • sendUnChoke

      public void sendUnChoke()
      Should never be called
      Specified by:
      sendUnChoke in interface PEPeer
      Specified by:
      sendUnChoke in interface PEPeerTransport
    • getAlternativeIPv6

      public 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
    • transferAvailable

      public boolean transferAvailable()
      Specified by:
      transferAvailable in interface PEPeer
      Specified by:
      transferAvailable in interface PEPeerTransport
    • isDownloadPossible

      public boolean isDownloadPossible()
      Description copied from interface: PEPeer
      checks several factors within the object so the caller wouldn't need to for convenience 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
    • sendCancel

      public void sendCancel(DiskManagerReadRequest request)
      Specified by:
      sendCancel in interface PEPeerTransport
    • request

      public DiskManagerReadRequest request(int pieceNumber, int pieceOffset, int pieceLength, boolean return_duplicates)
      Specified by:
      request in interface PEPeerTransport
      Parameters:
      pieceNumber -
      pieceOffset -
      pieceLength -
      return_duplicates - - if true and request already exists it will be returned, if false -> null
      Returns:
      true is the piece is really requested
    • getRequestIndex

      public int getRequestIndex(DiskManagerReadRequest request)
      Description copied from interface: PEPeerTransport
      Returns the index of this request in the peer's queue or -1 if not found
      Specified by:
      getRequestIndex in interface PEPeerTransport
      Returns:
    • dataReceived

      protected void dataReceived()
    • closeConnection

      public void closeConnection(String reason, int reason_code)
      Description copied from interface: PEPeerTransport
      Close the peer connection
      Specified by:
      closeConnection in interface PEPeerTransport
      Parameters:
      reason - for closure
    • isClosed

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

      public List getExpiredRequests()
      Specified by:
      getExpiredRequests in interface PEPeerTransport
    • getLastMessageSentTimeMono

      public long getLastMessageSentTimeMono()
      Specified by:
      getLastMessageSentTimeMono in interface PEPeerTransport
    • getMaxNbRequests

      public int getMaxNbRequests()
      Description copied from interface: PEPeerTransport
      peer-specific request max. return -1 to use the default piece-picker allocation method
      Specified by:
      getMaxNbRequests in interface PEPeerTransport
      Returns:
    • getNbRequests

      public int getNbRequests()
      Specified by:
      getNbRequests in interface PEPeerTransport
    • getPriorityOffsets

      public int[] getPriorityOffsets()
      Description copied from interface: PEPeerTransport
      Any priority offsets this peer has, or null if none
      Specified by:
      getPriorityOffsets in interface PEPeerTransport
      Returns:
    • requestAllocationStarts

      public boolean requestAllocationStarts(int[] base_priorities)
      Description copied from interface: PEPeerTransport
      Two methods that allow a peer to aggregate the individual requests generated during an allocation cycle if so desired
      Specified by:
      requestAllocationStarts in interface PEPeerTransport
      Returns:
      true if the peer is managing request priorities and doesn't want end-game random allocation behaviour
    • requestAllocationComplete

      public void requestAllocationComplete()
      Specified by:
      requestAllocationComplete in interface PEPeerTransport
    • getControl

      public PEPeerControl getControl()
      Specified by:
      getControl in interface PEPeerTransport
    • updatePeerExchange

      public void updatePeerExchange()
      Description copied from interface: PEPeerTransport
      Do any peer exchange processing/updating.
      Specified by:
      updatePeerExchange in interface PEPeerTransport
    • getPeerItemIdentity

      public PeerItem getPeerItemIdentity()
      Description copied from interface: PEPeerTransport
      Get the peer's address + port identification item.
      Specified by:
      getPeerItemIdentity in interface PEPeerTransport
      Returns:
      id
    • getConnectionState

      public int getConnectionState()
      Description copied from interface: PEPeerTransport
      Get the specific peer connection state.
      Specified by:
      getConnectionState in interface PEPeerTransport
      Returns:
      connection state
    • doKeepAliveCheck

      public void doKeepAliveCheck()
      Description copied from interface: PEPeerTransport
      Check if we need to send a keep-alive message. A keep-alive is sent if no other message has been sent within the last 2min.
      Specified by:
      doKeepAliveCheck in interface PEPeerTransport
    • doTimeoutChecks

      public boolean doTimeoutChecks()
      Description copied from interface: PEPeerTransport
      Check for possible connection timeouts.
      Specified by:
      doTimeoutChecks in interface PEPeerTransport
      Returns:
      true if the connection has been timed-out, false if not
    • doPerformanceTuningCheck

      public void doPerformanceTuningCheck()
      Description copied from interface: PEPeerTransport
      Perform checks related to performance optimizations, i.e. tune buffering related to send/receive speed.
      Specified by:
      doPerformanceTuningCheck in interface PEPeerTransport
    • 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
      Parameters:
      enable -
    • getConnectionEstablishedMonoTime

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

      public long getTimeSinceLastDataMessageReceived()
      Description copied from interface: PEPeerTransport
      Get the time since the last (most-recent) data (payload) message was received.
      Specified by:
      getTimeSinceLastDataMessageReceived in interface PEPeerTransport
      Returns:
      time count in ms, or -1 if we've never received a data message from them
    • getTimeSinceGoodDataReceived

      public long getTimeSinceGoodDataReceived()
      Description copied from interface: PEPeerTransport
      Get the time since the most-recent data that was actually written to disk was received.
      Specified by:
      getTimeSinceGoodDataReceived in interface PEPeerTransport
      Returns:
      time count in ms, or -1 if we've never received useful data from them
    • getTimeSinceLastDataMessageSent

      public long getTimeSinceLastDataMessageSent()
      Description copied from interface: PEPeerTransport
      Get the time since the last (most-recent) data (payload) message was sent.
      Specified by:
      getTimeSinceLastDataMessageSent in interface PEPeerTransport
      Returns:
      time count in ms, or -1 if we've never sent them a data message
    • getUnchokedForMillis

      public long getUnchokedForMillis()
      Specified by:
      getUnchokedForMillis in interface PEPeerTransport
    • getLatency

      public long getLatency()
      Specified by:
      getLatency in interface PEPeerTransport
    • getConsecutiveNoRequestCount

      public int getConsecutiveNoRequestCount()
      Specified by:
      getConsecutiveNoRequestCount in interface PEPeer
    • setConsecutiveNoRequestCount

      public void setConsecutiveNoRequestCount(int num)
      Specified by:
      setConsecutiveNoRequestCount in interface PEPeer
    • getManager

      public PEPeerManager getManager()
      Specified by:
      getManager in interface PEPeer
    • getPeerSource

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

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

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

      public String getIp()
      Specified by:
      getIp in interface PEPeer
    • getIPHostName

      public 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
    • 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
    • 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:
    • getAvailable

      public BitFlags getAvailable()
      Specified by:
      getAvailable in interface PEPeer
    • hasReceivedBitField

      public boolean hasReceivedBitField()
      Specified by:
      hasReceivedBitField in interface PEPeer
    • 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
    • isUnchokeOverride

      public boolean isUnchokeOverride()
      Specified by:
      isUnchokeOverride 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
    • 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
    • getSnubbedTime

      public long getSnubbedTime()
      Specified by:
      getSnubbedTime in interface PEPeer
    • isLANLocal

      public boolean isLANLocal()
      Description copied from interface: PEPeerTransport
      Is the connection within the local LAN network.
      Specified by:
      isLANLocal in interface PEPeer
      Specified by:
      isLANLocal in interface PEPeerTransport
      Returns:
      true if within LAN, false of outside the LAN segment
    • resetLANLocalStatus

      public void resetLANLocalStatus()
      Specified by:
      resetLANLocalStatus 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
      Parameters:
      piece_number -
      offset -
      length -
      life -
      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
    • clearRequestHint

      public void clearRequestHint()
      Specified by:
      clearRequestHint in interface PEPeer
    • sendRejectRequest

      public void sendRejectRequest(DiskManagerReadRequest request)
      Specified by:
      sendRejectRequest in interface PEPeer
    • sendBadPiece

      public void sendBadPiece(int piece_number)
      Specified by:
      sendBadPiece in interface PEPeerTransport
    • sendStatsRequest

      public void sendStatsRequest(Map request)
      Specified by:
      sendStatsRequest in interface PEPeer
      Specified by:
      sendStatsRequest in interface PEPeerTransport
    • sendStatsReply

      public void sendStatsReply(Map reply)
      Specified by:
      sendStatsReply in interface PEPeerTransport
    • sendHashRequest

      public void sendHashRequest(TOTorrentFileHashTree.HashRequest req)
      Specified by:
      sendHashRequest in interface PEPeerTransport
    • isTCP

      public boolean isTCP()
      Specified by:
      isTCP in interface PEPeerTransport
    • getNetwork

      public String getNetwork()
      Specified by:
      getNetwork in interface PEPeerTransport
    • getStats

      public PEPeerStats getStats()
      Specified by:
      getStats 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
    • getBytesRemaining

      public long getBytesRemaining()
      Specified by:
      getBytesRemaining in interface PEPeer
    • getClient

      public String getClient()
      Specified by:
      getClient in interface PEPeer
    • getHandshakeReservedBytes

      public byte[] getHandshakeReservedBytes()
      Specified by:
      getHandshakeReservedBytes in interface PEPeer
    • isOptimisticUnchoke

      public boolean isOptimisticUnchoke()
      Specified by:
      isOptimisticUnchoke in interface PEPeer
    • setOptimisticUnchoke

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

      public int getUniqueAnnounce()
      Specified by:
      getUniqueAnnounce in interface PEPeer
    • getUploadHint

      public int getUploadHint()
      Specified by:
      getUploadHint in interface PEPeer
    • setUniqueAnnounce

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

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

      public boolean isStalledPendingLoad()
      Description copied from interface: PEPeerTransport
      is peer waiting for a disk read with no network writes queued
      Specified by:
      isStalledPendingLoad in interface PEPeerTransport
      Returns:
    • addListener

      public void addListener(PEPeerListener l)
      Description copied from interface: PEPeer
      Add peer listener.
      Specified by:
      addListener in interface PEPeer
      Parameters:
      l -
    • removeListener

      public void removeListener(PEPeerListener l)
      Description copied from interface: PEPeer
      Remove peer listener.
      Specified by:
      removeListener in interface PEPeer
      Parameters:
      l -
    • getNetworkConnection

      public NetworkConnectionBase getNetworkConnection()
      Specified by:
      getNetworkConnection 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
    • getCurrentIncomingRequestProgress

      public int[] getCurrentIncomingRequestProgress()
      Specified by:
      getCurrentIncomingRequestProgress in interface PEPeer
      Returns:
      null or { size, done }
    • getCurrentOutgoingRequestProgress

      public int[] getCurrentOutgoingRequestProgress()
      Specified by:
      getCurrentOutgoingRequestProgress in interface PEPeer
    • 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
    • getMessagingMode

      public int getMessagingMode()
      Specified by:
      getMessagingMode in interface PEPeer
    • getEncryption

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

      public String getProtocol()
      Specified by:
      getProtocol in interface PEPeer
    • getProtocolQualifier

      public String getProtocolQualifier()
      Specified by:
      getProtocolQualifier 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
    • getData

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

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

      public Object getUserData(Object key)
      To retreive arbitrary objects against a peer.
      Specified by:
      getUserData in interface PEPeer
    • setUserData

      public void setUserData(Object key, Object value)
      To store arbitrary objects against a peer.
      Specified by:
      setUserData in interface PEPeer
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • 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
    • addReservedPieceNumber

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

      public void removeReservedPieceNumber(int piece_number)
      Specified by:
      removeReservedPieceNumber 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
    • getIncomingRequestedPieceNumberCount

      public int getIncomingRequestedPieceNumberCount()
      Specified by:
      getIncomingRequestedPieceNumberCount in interface PEPeerTransport
    • getIncomingRequestCount

      public int getIncomingRequestCount()
      Specified by:
      getIncomingRequestCount in interface PEPeer
    • getOutgoingRequestCount

      public int getOutgoingRequestCount()
      Specified by:
      getOutgoingRequestCount in interface PEPeer
    • 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
    • getLastPiece

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

      public void setLastPiece(int pieceNumber)
      Specified by:
      setLastPiece in interface PEPeer
    • checkInterested

      public void checkInterested()
      Nothing to do if called
      Specified by:
      checkInterested in interface PEPeerTransport
    • isAvailabilityAdded

      public boolean isAvailabilityAdded()
      Apaprently nothing significant to do if called
    • clearAvailabilityAdded

      public void clearAvailabilityAdded()
      Nothing to do if called
    • reconnect

      public PEPeerTransport reconnect(boolean tryUDP, boolean tryIPv6, Map userData)
      Description copied from interface: PEPeerTransport
      Attempts to reconnect to the same peer
      Specified by:
      reconnect in interface PEPeerTransport
      Parameters:
      tryUDP - try to initiate a UDP connection if true, just reestablish the previous state otherwise
      tryIPv6 - TODO
      Returns:
      null if reconnect not possible, reconnected peer otherwise
    • isReconnect

      public boolean isReconnect()
      Specified by:
      isReconnect in interface PEPeerTransport
    • isSafeForReconnect

      public boolean isSafeForReconnect()
      Description copied from interface: PEPeerTransport
      This method is called to check if it is safe to reconnect to a peer, i.e. avoid hammering exchanging data with a peer should work as it takes time to setup the connection and negotiate things before that happens
      Specified by:
      isSafeForReconnect in interface PEPeerTransport
      Returns:
      true if we exchanged payload data with the peer during the current connection
    • setUploadRateLimitBytesPerSecond

      public void setUploadRateLimitBytesPerSecond(int bytes)
      Specified by:
      setUploadRateLimitBytesPerSecond in interface PEPeer
    • setDownloadRateLimitBytesPerSecond

      public void setDownloadRateLimitBytesPerSecond(int bytes)
      Specified by:
      setDownloadRateLimitBytesPerSecond in interface PEPeer
    • getUploadRateLimitBytesPerSecond

      public int getUploadRateLimitBytesPerSecond()
      Specified by:
      getUploadRateLimitBytesPerSecond in interface PEPeer
    • getDownloadRateLimitBytesPerSecond

      public int getDownloadRateLimitBytesPerSecond()
      Specified by:
      getDownloadRateLimitBytesPerSecond in interface PEPeer
    • updateAutoUploadPriority

      public void updateAutoUploadPriority(Object key, boolean inc)
      Specified by:
      updateAutoUploadPriority in interface PEPeer
    • addRateLimiter

      public void addRateLimiter(LimitedRateGroup limiter, boolean upload)
      Specified by:
      addRateLimiter in interface PEPeer
    • getRateLimiters

      public LimitedRateGroup[] getRateLimiters(boolean upload)
      Specified by:
      getRateLimiters in interface PEPeer
    • removeRateLimiter

      public void removeRateLimiter(LimitedRateGroup limiter, boolean upload)
      Specified by:
      removeRateLimiter in interface PEPeer
    • setUploadDisabled

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

      public void setDownloadDisabled(Object key, boolean disabled)
      Specified by:
      setDownloadDisabled in interface PEPeer
    • isUploadDisabled

      public boolean isUploadDisabled()
      Specified by:
      isUploadDisabled in interface PEPeer
    • isDownloadDisabled

      public boolean isDownloadDisabled()
      Specified by:
      isDownloadDisabled in interface PEPeer
    • setHaveAggregationEnabled

      public void setHaveAggregationEnabled(boolean enabled)
      Specified by:
      setHaveAggregationEnabled in interface PEPeer
    • setPriorityConnection

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

      public boolean isPriorityConnection()
      Specified by:
      isPriorityConnection in interface PEPeer
    • canSendHolePunch

      public boolean canSendHolePunch()
      Specified by:
      canSendHolePunch in interface PEPeerTransport
    • sendHolePunch

      public void sendHolePunch(InetAddress address, int port)
      Specified by:
      sendHolePunch in interface PEPeerTransport
    • generateEvidence

      public void generateEvidence(IndentWriter writer)
      Specified by:
      generateEvidence in interface PEPeerTransport
    • getClientNameFromExtensionHandshake

      public String getClientNameFromExtensionHandshake()
      Specified by:
      getClientNameFromExtensionHandshake in interface PEPeer
    • getClientNameFromPeerID

      public String getClientNameFromPeerID()
      Specified by:
      getClientNameFromPeerID in interface PEPeer
    • getTaggableType

      public int getTaggableType()
      Specified by:
      getTaggableType in interface Taggable
    • getTaggableID

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

      public String getTaggableName()
      Specified by:
      getTaggableName in interface Taggable
    • getTaggableResolver

      public TaggableResolver getTaggableResolver()
      Specified by:
      getTaggableResolver in interface Taggable
    • getTaggableTransientProperty

      public Object getTaggableTransientProperty(String key)
      Specified by:
      getTaggableTransientProperty in interface Taggable
    • setTaggableTransientProperty

      public void setTaggableTransientProperty(String key, Object value)
      Specified by:
      setTaggableTransientProperty in interface Taggable
    • getDescriptor

      public PeerDescriptor getDescriptor()
      Specified by:
      getDescriptor in interface PEPeer