Package com.biglybt.plugin.extseed
Class ExternalSeedPeer
- java.lang.Object
-
- com.biglybt.plugin.extseed.ExternalSeedPeer
-
- All Implemented Interfaces:
Peer
,ExternalSeedReaderListener
public class ExternalSeedPeer extends java.lang.Object implements Peer, ExternalSeedReaderListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ExternalSeedPeer.ESConnection
-
Field Summary
Fields Modifier and Type Field Description private boolean
availabilityAdded
private boolean[]
available
private ExternalSeedPeer.ESConnection
connection
private Monitor
connection_mon
private ConnectionStub
connection_stub
private boolean
doing_allocations
private Download
download
private boolean
is_optimistic
private CopyOnWriteList<PeerListener2>
listeners
private Monitor
listeners_mon
private PeerManager
manager
private boolean
peer_added
private byte[]
peer_id
private ExternalSeedPlugin
plugin
private ExternalSeedReader
reader
private java.util.List<PeerReadRequest>
request_list
private long
snubbed
private int
state
private PeerStats
stats
private java.util.Map
user_data
-
Fields inherited from interface com.biglybt.pif.peers.Peer
CLOSING, CONNECTING, DISCONNECTED, HANDSHAKING, PR_FORCE_CONNECTION, PR_PRIORITY_CONNECTION, PR_PROTOCOL, PR_PROTOCOL_QUALIFIER, TRANSFERING
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ExternalSeedPeer(ExternalSeedPlugin _plugin, Download _download, ExternalSeedReader _reader)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(PeerListener2 listener)
Add peer listener.protected void
addPeer()
void
addRateLimiter(RateLimiter limiter, boolean is_upload)
boolean
addRequest(PeerReadRequest request)
void
bindConnection(ConnectionStub stub)
void
cancelRequest(PeerReadRequest request)
protected boolean
checkConnection()
void
close(java.lang.String reason, boolean closedOnError, boolean attemptReconnect)
protected void
fireEvent(int type, java.lang.Object data)
boolean[]
getAvailable()
java.lang.String
getClient()
Connection
getConnection()
Get the network connection that backs this peer.protected Download
getDownload()
java.util.List
getExpiredRequests()
byte[]
getHandshakeReservedBytes()
byte[]
getId()
java.lang.String
getIp()
Get the peer's local TCP connection port.PeerManager
getManager()
int
getMaximumNumberOfRequests()
java.lang.String
getName()
int
getNumberOfRequests()
int
getOutgoingRequestCount()
int[]
getOutgoingRequestedPieceNumbers()
int
getPercentDoneInThousandNotation()
int
getPercentDoneOfCurrentIncomingRequest()
int
getPercentDoneOfCurrentOutgoingRequest()
int
getPort()
int[]
getPriorityOffsets()
java.util.Map
getProperties()
RateLimiter[]
getRateLimiters(boolean is_upload)
protected ExternalSeedReader
getReader()
java.util.List<PeerReadRequest>
getRequests()
long
getSnubbedTime()
int
getState()
PeerStats
getStats()
Message[]
getSupportedMessages()
Get the list of messages that this peer and us mutually understand.int
getTCPListenPort()
Get the TCP port this peer is listening for incoming connections on.int
getUDPListenPort()
Get the UDP port this peer is listening for incoming connections on.int
getUDPNonDataListenPort()
Get the UDP port this peer is listening on for non-data connectionsjava.net.URL
getURL()
java.lang.Object
getUserData(java.lang.Object key)
boolean
isChoked()
boolean
isChoking()
boolean
isDownloadPossible()
This is much list isTransferAvailable(), except is more comprehensive.boolean
isIncoming()
boolean
isInterested()
boolean
isInteresting()
boolean
isLANLocal()
boolean
isMyPeer()
boolean
isOptimisticUnchoke()
boolean
isPieceAvailable(int pieceNumber)
boolean
isPriorityConnection()
boolean
isSeed()
boolean
isSnubbed()
boolean
isTransferAvailable()
int
readBytes(int max)
Rate control - gives the maximum number of bytes that can be read from this connection at this time and returns the actual number readvoid
remove()
void
removeListener(PeerListener2 listener)
Remove peer listener.protected void
removePeer()
void
removeRateLimiter(RateLimiter limiter, boolean is_upload)
void
requestAllocationComplete()
boolean
requestAllocationStarts(int[] base_priorities)
void
requestCancelled(PeerReadRequest request)
void
requestComplete(PeerReadRequest request, PooledByteBuffer data)
void
requestFailed(PeerReadRequest request)
void
resetLANLocalStatus()
protected boolean
sameAs(ExternalSeedPeer other)
protected void
setManager(PeerManager _manager)
void
setOptimisticUnchoke(boolean _is_optimistic)
void
setPriorityConnection(boolean is_priority)
void
setSnubbed(boolean b)
protected void
setState(int newState)
void
setUserData(java.lang.Object key, java.lang.Object value)
boolean
supportsMessaging()
Whether or not this peer supports the advanced messaging API.int
writeBytes(int max)
-
-
-
Field Detail
-
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 java.util.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 java.util.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 Detail
-
ExternalSeedPeer
protected ExternalSeedPeer(ExternalSeedPlugin _plugin, Download _download, ExternalSeedReader _reader)
-
-
Method Detail
-
sameAs
protected boolean sameAs(ExternalSeedPeer other)
-
setManager
protected void setManager(PeerManager _manager)
-
getManager
public PeerManager getManager()
- Specified by:
getManager
in interfacePeer
-
getDownload
protected Download getDownload()
-
bindConnection
public void bindConnection(ConnectionStub stub)
- Specified by:
bindConnection
in interfacePeer
-
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 interfaceExternalSeedReaderListener
-
requestCancelled
public void requestCancelled(PeerReadRequest request)
- Specified by:
requestCancelled
in interfaceExternalSeedReaderListener
-
requestFailed
public void requestFailed(PeerReadRequest request)
- Specified by:
requestFailed
in interfaceExternalSeedReaderListener
-
getURL
public java.net.URL getURL()
-
getIp
public java.lang.String getIp()
Description copied from interface:Peer
Get the peer's local TCP connection 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 interfacePeer
- 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 interfacePeer
- 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 interfacePeer
- Returns:
-
isLANLocal
public boolean isLANLocal()
- Specified by:
isLANLocal
in interfacePeer
-
resetLANLocalStatus
public void resetLANLocalStatus()
- Specified by:
resetLANLocalStatus
in interfacePeer
-
getAvailable
public final boolean[] getAvailable()
- Specified by:
getAvailable
in interfacePeer
-
isPieceAvailable
public final boolean isPieceAvailable(int pieceNumber)
- Specified by:
isPieceAvailable
in interfacePeer
- Parameters:
pieceNumber
- int- Returns:
- true if this peers makes this piece available
-
isTransferAvailable
public boolean isTransferAvailable()
- Specified by:
isTransferAvailable
in interfacePeer
-
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 interfacePeer
- Returns:
- true if several factors say downloading can be tried.
-
isInterested
public boolean isInterested()
- Specified by:
isInterested
in interfacePeer
-
isInteresting
public boolean isInteresting()
- Specified by:
isInteresting
in interfacePeer
-
getSnubbedTime
public long getSnubbedTime()
- Specified by:
getSnubbedTime
in interfacePeer
-
setSnubbed
public void setSnubbed(boolean b)
- Specified by:
setSnubbed
in interfacePeer
-
isOptimisticUnchoke
public boolean isOptimisticUnchoke()
- Specified by:
isOptimisticUnchoke
in interfacePeer
-
setOptimisticUnchoke
public void setOptimisticUnchoke(boolean _is_optimistic)
- Specified by:
setOptimisticUnchoke
in interfacePeer
-
isIncoming
public boolean isIncoming()
- Specified by:
isIncoming
in interfacePeer
-
getPercentDoneInThousandNotation
public int getPercentDoneInThousandNotation()
- Specified by:
getPercentDoneInThousandNotation
in interfacePeer
-
getExpiredRequests
public java.util.List getExpiredRequests()
- Specified by:
getExpiredRequests
in interfacePeer
-
getRequests
public java.util.List<PeerReadRequest> getRequests()
- Specified by:
getRequests
in interfacePeer
-
getMaximumNumberOfRequests
public int getMaximumNumberOfRequests()
- Specified by:
getMaximumNumberOfRequests
in interfacePeer
-
getNumberOfRequests
public int getNumberOfRequests()
- Specified by:
getNumberOfRequests
in interfacePeer
-
getPriorityOffsets
public int[] getPriorityOffsets()
- Specified by:
getPriorityOffsets
in interfacePeer
-
requestAllocationStarts
public boolean requestAllocationStarts(int[] base_priorities)
- Specified by:
requestAllocationStarts
in interfacePeer
-
requestAllocationComplete
public void requestAllocationComplete()
- Specified by:
requestAllocationComplete
in interfacePeer
-
addRequest
public boolean addRequest(PeerReadRequest request)
- Specified by:
addRequest
in interfacePeer
-
cancelRequest
public void cancelRequest(PeerReadRequest request)
- Specified by:
cancelRequest
in interfacePeer
-
close
public void close(java.lang.String reason, boolean closedOnError, boolean attemptReconnect)
-
remove
public void remove()
-
addListener
public void addListener(PeerListener2 listener)
Description copied from interface:Peer
Add peer listener.- Specified by:
addListener
in interfacePeer
-
removeListener
public void removeListener(PeerListener2 listener)
Description copied from interface:Peer
Remove peer listener.- Specified by:
removeListener
in interfacePeer
-
fireEvent
protected void fireEvent(int type, java.lang.Object data)
-
getConnection
public Connection getConnection()
Description copied from interface:Peer
Get the network connection that backs this peer.- Specified by:
getConnection
in interfacePeer
- 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 interfacePeer
- 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 interfacePeer
- 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
-
writeBytes
public int writeBytes(int max)
- Specified by:
writeBytes
in interfacePeer
-
addRateLimiter
public void addRateLimiter(RateLimiter limiter, boolean is_upload)
- Specified by:
addRateLimiter
in interfacePeer
- Parameters:
limiter
- create via ConnectionManageris_upload
- false -> download limit
-
removeRateLimiter
public void removeRateLimiter(RateLimiter limiter, boolean is_upload)
- Specified by:
removeRateLimiter
in interfacePeer
-
getRateLimiters
public RateLimiter[] getRateLimiters(boolean is_upload)
- Specified by:
getRateLimiters
in interfacePeer
-
getPercentDoneOfCurrentIncomingRequest
public int getPercentDoneOfCurrentIncomingRequest()
- Specified by:
getPercentDoneOfCurrentIncomingRequest
in interfacePeer
-
getOutgoingRequestedPieceNumbers
public int[] getOutgoingRequestedPieceNumbers()
- Specified by:
getOutgoingRequestedPieceNumbers
in interfacePeer
-
getOutgoingRequestCount
public int getOutgoingRequestCount()
- Specified by:
getOutgoingRequestCount
in interfacePeer
-
getPercentDoneOfCurrentOutgoingRequest
public int getPercentDoneOfCurrentOutgoingRequest()
- Specified by:
getPercentDoneOfCurrentOutgoingRequest
in interfacePeer
-
getProperties
public java.util.Map getProperties()
-
getName
public java.lang.String getName()
-
setUserData
public void setUserData(java.lang.Object key, java.lang.Object value)
- Specified by:
setUserData
in interfacePeer
-
getUserData
public java.lang.Object getUserData(java.lang.Object key)
- Specified by:
getUserData
in interfacePeer
-
getHandshakeReservedBytes
public byte[] getHandshakeReservedBytes()
- Specified by:
getHandshakeReservedBytes
in interfacePeer
-
isPriorityConnection
public boolean isPriorityConnection()
- Specified by:
isPriorityConnection
in interfacePeer
-
setPriorityConnection
public void setPriorityConnection(boolean is_priority)
- Specified by:
setPriorityConnection
in interfacePeer
-
-