Interface PEPeerTransport
- All Known Implementing Classes:
PeerForeignDelegate, PEPeerTransportProtocol
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intFields inherited from interface PEPeer
CLOSING, CONNECTING, DISCONNECTED, HANDSHAKING, MESSAGING_AZMP, MESSAGING_BT_ONLY, MESSAGING_EXTERN, MESSAGING_LTEP, StateNames, TRANSFERINGFields inherited from interface Taggable
TT_DOWNLOAD, TT_NONE, TT_PEER -
Method Summary
Modifier and TypeMethodDescriptionbooleanvoidif it doesn't go as expected when trying to find a piece to ask a peer for, need to double check if we're still interested in them, and get the BT protocol sycnhedvoidcloseConnection(String reason, int reason_code) Close the peer connectionvoidCheck if we need to send a keep-alive message.voidPerform checks related to performance optimizations, i.e.booleanCheck for possible connection timeouts.voidgenerateEvidence(IndentWriter writer) intGet the specific peer connection state.intlonglongintpeer-specific request max.intintGet the peer's address + port identification item.int[]Any priority offsets this peer has, or null if noneintgetRequestIndex(DiskManagerReadRequest request) Returns the index of this request in the peer's queue or -1 if not foundlongGet the time since the most-recent data that was actually written to disk was received.longGet the time since the last (most-recent) data (payload) message was received.longGet the time since the last (most-recent) data (payload) message was sent.longbooleanIs the connection within the local LAN network.booleanbooleanThis method is called to check if it is safe to reconnect to a peer, i.e.booleanis peer waiting for a disk read with no network writes queuedbooleanisTCP()Attempts to reconnect to the same peerrequest(int pieceNumber, int pieceOffset, int pieceLength, boolean return_duplicates) voidbooleanrequestAllocationStarts(int[] base_priorities) Two methods that allow a peer to aggregate the individual requests generated during an allocation cycle if so desiredvoidsendBadPiece(int piece_number) voidsendCancel(DiskManagerReadRequest request) voidvoidvoidsendHave(int piece) voidsendHolePunch(InetAddress address, int port) voidsendStatsReply(Map reply) voidsendStatsRequest(Map request) voidvoidstart()Start message processing for the peerbooleanvoidDo any peer exchange processing/updating.Methods inherited from interface PEPeer
addListener, addRateLimiter, addReservedPieceNumber, clearRequestHint, getAlternativeIPv6, getAvailable, getBytesRemaining, getClient, getClientNameFromExtensionHandshake, getClientNameFromPeerID, getConnectionEstablishedMonoTime, getConsecutiveNoRequestCount, getCurrentIncomingRequestProgress, getCurrentOutgoingRequestProgress, getData, getDescriptor, getDownloadRateLimitBytesPerSecond, getEncryption, getHandshakeReservedBytes, getId, getIncomingRequestCount, getIncomingRequestedPieceNumbers, getIp, getIPHostName, getLastPiece, getManager, getMessagingMode, getNetworkConnection, getOutgoingRequestCount, getOutgoingRequestedPieceNumbers, getPeerSource, getPeerState, getPercentDoneInThousandNotation, getPercentDoneOfCurrentIncomingRequest, getPercentDoneOfCurrentOutgoingRequest, getPluginConnection, getPort, getProtocol, getProtocolQualifier, getRateLimiters, getRecentPiecesSent, getRequestHint, getReservedPieceNumbers, getSnubbedTime, getStats, getSupportedMessages, getTCPListenPort, getUDPListenPort, getUDPNonDataListenPort, getUniqueAnnounce, getUploadHint, getUploadRateLimitBytesPerSecond, getUserData, hasReceivedBitField, isChokedByMe, isChokingMe, isClosed, isDownloadDisabled, isDownloadPossible, isIncoming, isInterested, isInteresting, isMyPeer, isOptimisticUnchoke, isPieceAvailable, isPriorityConnection, isRelativeSeed, isSeed, isSnubbed, isUnchokeOverride, isUploadDisabled, removeListener, removeRateLimiter, removeReservedPieceNumber, resetLANLocalStatus, sendRejectRequest, sendRequestHint, setConsecutiveNoRequestCount, setData, setDownloadDisabled, setDownloadRateLimitBytesPerSecond, setHaveAggregationEnabled, setLastPiece, setOptimisticUnchoke, setPriorityConnection, setSnubbed, setSuspendedLazyBitFieldEnabled, setUniqueAnnounce, setUploadDisabled, setUploadHint, setUploadRateLimitBytesPerSecond, setUserData, supportsMessaging, updateAutoUploadPriorityMethods inherited from interface Taggable
getTaggableID, getTaggableName, getTaggableResolver, getTaggableTransientProperty, getTaggableType, getTagMutationCount, setTaggableTransientProperty, updateTagMutationCount
-
Field Details
-
CONNECTION_PENDING
static final int CONNECTION_PENDING- See Also:
-
CONNECTION_CONNECTING
static final int CONNECTION_CONNECTING- See Also:
-
CONNECTION_WAITING_FOR_HANDSHAKE
static final int CONNECTION_WAITING_FOR_HANDSHAKE- See Also:
-
CONNECTION_FULLY_ESTABLISHED
static final int CONNECTION_FULLY_ESTABLISHED- See Also:
-
CP_UNKNOWN
static final int CP_UNKNOWN- See Also:
-
CP_CONNECTING
static final int CP_CONNECTING- See Also:
-
CP_CONNECT_OK
static final int CP_CONNECT_OK- See Also:
-
CP_CONNECT_FAILED
static final int CP_CONNECT_FAILED- See Also:
-
CP_RECEIVED_DATA
static final int CP_RECEIVED_DATA- See Also:
-
-
Method Details
-
getOutboundConnectionProgress
int getOutboundConnectionProgress() -
start
void start()Start message processing for the peer -
sendChoke
-
sendUnChoke
void sendUnChoke()- Specified by:
sendUnChokein interfacePEPeer
-
sendHave
void sendHave(int piece) -
sendCancel
-
sendBadPiece
void sendBadPiece(int piece_number) -
sendStatsRequest
- Specified by:
sendStatsRequestin interfacePEPeer
-
sendStatsReply
-
requestAllocationStarts
boolean requestAllocationStarts(int[] base_priorities) Two methods that allow a peer to aggregate the individual requests generated during an allocation cycle if so desired- Returns:
- true if the peer is managing request priorities and doesn't want end-game random allocation behaviour
-
requestAllocationComplete
void requestAllocationComplete() -
request
DiskManagerReadRequest request(int pieceNumber, int pieceOffset, int pieceLength, boolean return_duplicates) - Parameters:
pieceNumber-pieceOffset-pieceLength-return_duplicates- - if true and request already exists it will be returned, if false -> null- Returns:
- request if actually requested, null otherwise
-
getRequestIndex
Returns the index of this request in the peer's queue or -1 if not found- Returns:
-
closeConnection
Close the peer connection- Parameters:
reason- for closure
-
transferAvailable
boolean transferAvailable()- Specified by:
transferAvailablein interfacePEPeer
-
getLastMessageSentTimeMono
long getLastMessageSentTimeMono() -
getExpiredRequests
List getExpiredRequests() -
getMaxNbRequests
int getMaxNbRequests()peer-specific request max. return -1 to use the default piece-picker allocation method- Returns:
-
getNbRequests
int getNbRequests() -
getControl
PEPeerControl getControl() -
getPriorityOffsets
int[] getPriorityOffsets()Any priority offsets this peer has, or null if none- Returns:
-
doKeepAliveCheck
void doKeepAliveCheck()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. -
doTimeoutChecks
boolean doTimeoutChecks()Check for possible connection timeouts.- Returns:
- true if the connection has been timed-out, false if not
-
doPerformanceTuningCheck
void doPerformanceTuningCheck()Perform checks related to performance optimizations, i.e. tune buffering related to send/receive speed. -
getConnectionState
int getConnectionState()Get the specific peer connection state.- Returns:
- connection state
-
getTimeSinceLastDataMessageReceived
long getTimeSinceLastDataMessageReceived()Get the time since the last (most-recent) data (payload) message was received.- Returns:
- time count in ms, or -1 if we've never received a data message from them
-
getTimeSinceGoodDataReceived
long getTimeSinceGoodDataReceived()Get the time since the most-recent data that was actually written to disk was received.- Returns:
- time count in ms, or -1 if we've never received useful data from them
-
getTimeSinceLastDataMessageSent
long getTimeSinceLastDataMessageSent()Get the time since the last (most-recent) data (payload) message was sent.- Returns:
- time count in ms, or -1 if we've never sent them a data message
-
getUnchokedForMillis
long getUnchokedForMillis() -
getLatency
long getLatency() -
updatePeerExchange
void updatePeerExchange()Do any peer exchange processing/updating. -
getPeerItemIdentity
-
isStalledPendingLoad
boolean isStalledPendingLoad()is peer waiting for a disk read with no network writes queued- Returns:
-
isLANLocal
boolean isLANLocal()Is the connection within the local LAN network.- Specified by:
isLANLocalin interfacePEPeer- Returns:
- true if within LAN, false of outside the LAN segment
-
isTCP
boolean isTCP() -
checkInterested
void checkInterested()if it doesn't go as expected when trying to find a piece to ask a peer for, need to double check if we're still interested in them, and get the BT protocol sycnhed -
reconnect
Attempts to reconnect to the same peer- Parameters:
tryUDP- try to initiate a UDP connection if true, just reestablish the previous state otherwisetryIPv6- TODO- Returns:
- null if reconnect not possible, reconnected peer otherwise
-
isReconnect
boolean isReconnect() -
getIncomingRequestedPieceNumberCount
int getIncomingRequestedPieceNumberCount() -
isSafeForReconnect
boolean isSafeForReconnect()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- Returns:
- true if we exchanged payload data with the peer during the current connection
-
getNetwork
String getNetwork() -
sendHashRequest
-
canSendHolePunch
boolean canSendHolePunch() -
sendHolePunch
-
generateEvidence
-