Class ExternalSeedPeer

java.lang.Object
com.biglybt.plugin.extseed.ExternalSeedPeer
All Implemented Interfaces:
Peer, ExternalSeedReaderListener

public class ExternalSeedPeer extends Object implements Peer, ExternalSeedReaderListener
  • Field Details

    • plugin

      private ExternalSeedPlugin plugin
    • download

      private Download download
    • manager

      private PeerManager manager
    • connection_stub

      private ConnectionStub connection_stub
    • stats

      private PeerStats stats
    • user_data

      private Map user_data
    • reader

      private ExternalSeedReader reader
    • state

      private int state
    • peer_id

      private byte[] peer_id
    • available

      private boolean[] available
    • availabilityAdded

      private boolean availabilityAdded
    • snubbed

      private long snubbed
    • is_optimistic

      private boolean is_optimistic
    • connection_mon

      private Monitor connection_mon
    • peer_added

      private boolean peer_added
    • request_list

      private List<PeerReadRequest> request_list
    • listeners

      private CopyOnWriteList<PeerListener2> listeners
    • listeners_mon

      private Monitor listeners_mon
    • doing_allocations

      private boolean doing_allocations
    • connection

      private final ExternalSeedPeer.ESConnection connection
  • Constructor Details

  • Method Details

    • sameAs

      protected boolean sameAs(ExternalSeedPeer other)
    • setManager

      protected void setManager(PeerManager _manager)
    • getManager

      public PeerManager getManager()
      Specified by:
      getManager in interface Peer
    • getDownload

      protected Download getDownload()
    • isMyPeer

      public boolean isMyPeer()
      Specified by:
      isMyPeer in interface Peer
    • bindConnection

      public void bindConnection(ConnectionStub stub)
      Specified by:
      bindConnection in interface Peer
    • getReader

      protected ExternalSeedReader getReader()
    • setState

      protected void setState(int newState)
    • checkConnection

      protected boolean checkConnection()
    • addPeer

      protected void addPeer()
    • removePeer

      protected void removePeer()
    • requestComplete

      public void requestComplete(PeerReadRequest request, PooledByteBuffer data)
      Specified by:
      requestComplete in interface ExternalSeedReaderListener
    • requestCancelled

      public void requestCancelled(PeerReadRequest request)
      Specified by:
      requestCancelled in interface ExternalSeedReaderListener
    • requestFailed

      public void requestFailed(PeerReadRequest request)
      Specified by:
      requestFailed in interface ExternalSeedReaderListener
    • getState

      public int getState()
      Specified by:
      getState in interface Peer
    • getId

      public byte[] getId()
      Specified by:
      getId in interface Peer
    • getURL

      public URL getURL()
    • getIp

      public String getIp()
      Description copied from interface: Peer
      Get the peer's local TCP connection port.
      Specified by:
      getIp in interface Peer
      Returns:
      local port
    • getTCPListenPort

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

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

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

      public int getPort()
      Specified by:
      getPort in interface Peer
    • isLANLocal

      public boolean isLANLocal()
      Specified by:
      isLANLocal in interface Peer
    • resetLANLocalStatus

      public void resetLANLocalStatus()
      Specified by:
      resetLANLocalStatus in interface Peer
    • getAvailable

      public final boolean[] getAvailable()
      Specified by:
      getAvailable in interface Peer
    • isPieceAvailable

      public final boolean isPieceAvailable(int pieceNumber)
      Specified by:
      isPieceAvailable in interface Peer
      Parameters:
      pieceNumber - int
      Returns:
      true if this peers makes this piece available
    • isTransferAvailable

      public boolean isTransferAvailable()
      Specified by:
      isTransferAvailable in interface Peer
    • isDownloadPossible

      public boolean isDownloadPossible()
      Description copied from interface: Peer
      This is much list isTransferAvailable(), except is more comprehensive. That is; it checks a few more factors, within the object for speed, so that a more timely status is considered and the caller doesn't need to try to check each thing on it's own.
      Specified by:
      isDownloadPossible in interface Peer
      Returns:
      true if several factors say downloading can be tried.
    • isChoked

      public boolean isChoked()
      Specified by:
      isChoked in interface Peer
    • isChoking

      public boolean isChoking()
      Specified by:
      isChoking in interface Peer
    • isInterested

      public boolean isInterested()
      Specified by:
      isInterested in interface Peer
    • isInteresting

      public boolean isInteresting()
      Specified by:
      isInteresting in interface Peer
    • isSeed

      public boolean isSeed()
      Specified by:
      isSeed in interface Peer
    • isSnubbed

      public boolean isSnubbed()
      Specified by:
      isSnubbed in interface Peer
    • getSnubbedTime

      public long getSnubbedTime()
      Specified by:
      getSnubbedTime in interface Peer
    • setSnubbed

      public void setSnubbed(boolean b)
      Specified by:
      setSnubbed in interface Peer
    • isOptimisticUnchoke

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

      public void setOptimisticUnchoke(boolean _is_optimistic)
      Specified by:
      setOptimisticUnchoke in interface Peer
    • getStats

      public PeerStats getStats()
      Specified by:
      getStats in interface Peer
    • isIncoming

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

      public int getPercentDoneInThousandNotation()
      Specified by:
      getPercentDoneInThousandNotation in interface Peer
    • getClient

      public String getClient()
      Specified by:
      getClient in interface Peer
    • getExpiredRequests

      public List<PeerReadRequest> getExpiredRequests()
      Specified by:
      getExpiredRequests in interface Peer
    • getRequests

      public List<PeerReadRequest> getRequests()
      Specified by:
      getRequests in interface Peer
    • getMaximumNumberOfRequests

      public int getMaximumNumberOfRequests()
      Specified by:
      getMaximumNumberOfRequests in interface Peer
    • getNumberOfRequests

      public int getNumberOfRequests()
      Specified by:
      getNumberOfRequests in interface Peer
    • getPriorityOffsets

      public int[] getPriorityOffsets()
      Specified by:
      getPriorityOffsets in interface Peer
    • requestAllocationStarts

      public boolean requestAllocationStarts(int[] base_priorities)
      Specified by:
      requestAllocationStarts in interface Peer
    • requestAllocationComplete

      public void requestAllocationComplete()
      Specified by:
      requestAllocationComplete in interface Peer
    • addRequest

      public boolean addRequest(PeerReadRequest request)
      Specified by:
      addRequest in interface Peer
    • cancelRequest

      public void cancelRequest(PeerReadRequest request)
      Specified by:
      cancelRequest in interface Peer
    • close

      public void close(String reason, int reason_code, boolean closedOnError, boolean attemptReconnect)
      Specified by:
      close in interface Peer
    • remove

      public void remove()
    • addListener

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

      public void removeListener(PeerListener2 listener)
      Description copied from interface: Peer
      Remove peer listener.
      Specified by:
      removeListener in interface Peer
      Parameters:
      listener -
    • fireEvent

      protected void fireEvent(int type, Object data)
    • getConnection

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

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

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

      public int readBytes(int max)
      Description copied from interface: Peer
      Rate control - gives the maximum number of bytes that can be read from this connection at this time and returns the actual number read
      Specified by:
      readBytes in interface Peer
      Parameters:
      max -
      Returns:
    • writeBytes

      public int writeBytes(int max)
      Specified by:
      writeBytes in interface Peer
    • addRateLimiter

      public void addRateLimiter(RateLimiter limiter, boolean is_upload)
      Specified by:
      addRateLimiter in interface Peer
      Parameters:
      limiter - create via ConnectionManager
      is_upload - false -> download limit
    • removeRateLimiter

      public void removeRateLimiter(RateLimiter limiter, boolean is_upload)
      Specified by:
      removeRateLimiter in interface Peer
    • getRateLimiters

      public RateLimiter[] getRateLimiters(boolean is_upload)
      Specified by:
      getRateLimiters in interface Peer
    • getCurrentIncomingRequestProgress

      public int[] getCurrentIncomingRequestProgress()
      Specified by:
      getCurrentIncomingRequestProgress in interface Peer
    • getOutgoingRequestedPieceNumbers

      public int[] getOutgoingRequestedPieceNumbers()
      Specified by:
      getOutgoingRequestedPieceNumbers in interface Peer
    • getOutgoingRequestCount

      public int getOutgoingRequestCount()
      Specified by:
      getOutgoingRequestCount in interface Peer
    • getCurrentOutgoingRequestProgress

      public int[] getCurrentOutgoingRequestProgress()
      Specified by:
      getCurrentOutgoingRequestProgress in interface Peer
    • getProperties

      public Map getProperties()
    • getName

      public String getName()
    • getDescriptor

      public PeerDescriptor getDescriptor()
      Specified by:
      getDescriptor in interface Peer
    • setUserData

      public void setUserData(Object key, Object value)
      Specified by:
      setUserData in interface Peer
    • getUserData

      public Object getUserData(Object key)
      Specified by:
      getUserData in interface Peer
    • getHandshakeReservedBytes

      public byte[] getHandshakeReservedBytes()
      Specified by:
      getHandshakeReservedBytes in interface Peer
    • isPriorityConnection

      public boolean isPriorityConnection()
      Specified by:
      isPriorityConnection in interface Peer
    • setPriorityConnection

      public void setPriorityConnection(boolean is_priority)
      Specified by:
      setPriorityConnection in interface Peer