org.gudy.azureus2.pluginsimpl.local.peers
Class PeerImpl

java.lang.Object
  extended by org.gudy.azureus2.core3.logging.LogRelation
      extended by org.gudy.azureus2.pluginsimpl.local.peers.PeerImpl
All Implemented Interfaces:
Peer

public class PeerImpl
extends LogRelation
implements Peer


Field Summary
protected  PEPeer delegate
           
protected  PeerManagerImpl manager
           
 
Fields inherited from interface org.gudy.azureus2.plugins.peers.Peer
CLOSING, CONNECTING, DISCONNECTED, HANDSHAKING, PR_PRIORITY_CONNECTION, PR_PROTOCOL, PR_PROTOCOL_QUALIFIER, TRANSFERING
 
Constructor Summary
protected PeerImpl(PEPeer _delegate)
          don't use me, use PeerManagerImpl.getPeerForPEPeer
 
Method Summary
 void addListener(PeerListener l)
          Add peer listener.
 void addListener(PeerListener2 l)
          Add peer listener.
 void addRateLimiter(RateLimiter limiter, boolean is_upload)
           
 boolean addRequest(PeerReadRequest request)
           
 void bindConnection(ConnectionStub stub)
           
 void cancelRequest(PeerReadRequest request)
           
 void close(java.lang.String reason, boolean closedOnError, boolean attemptReconnect)
           
protected  void closed()
           
 boolean equals(java.lang.Object other)
           
 boolean[] getAvailable()
           
 java.lang.String getClient()
           
 Connection getConnection()
          Get the network connection that backs this peer.
 PEPeer getDelegate()
           
 java.util.List getExpiredRequests()
           
 byte[] getHandshakeReservedBytes()
           
 byte[] getId()
           
 java.lang.String getIp()
          Get the peer's local TCP connection port.
 PeerManager getManager()
           
 int getMaximumNumberOfRequests()
           
 int getNumberOfRequests()
           
 int getOutgoingRequestCount()
           
 int[] getOutgoingRequestedPieceNumbers()
           
 PEPeer getPEPeer()
          Core use only.
 int getPercentDone()
           
 int getPercentDoneInThousandNotation()
           
 int getPercentDoneOfCurrentIncomingRequest()
           
 int getPercentDoneOfCurrentOutgoingRequest()
           
 int getPort()
           
 int[] getPriorityOffsets()
           
 java.lang.Object[] getQueryableInterfaces()
          Query this class for a reference to another class that it may hold
 RateLimiter[] getRateLimiters(boolean is_upload)
           
 java.lang.String getRelationText()
          A short description of what your class holds that can be printed by the logger
 java.util.List 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 connections
 java.lang.Object getUserData(java.lang.Object key)
           
 int hashCode()
           
 void initialize()
           
 boolean isChoked()
           
 boolean isChoking()
           
 boolean isDownloadPossible()
          This is much list isTransferAvailable(), except is more comprehensive.
 boolean isIncoming()
           
 boolean isInterested()
           
 boolean isInteresting()
           
 boolean isLANLocal()
           
 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 read
 void removeListener(PeerListener l)
          Remove peer listener.
 void removeListener(PeerListener2 l)
          Remove peer listener.
 void removeRateLimiter(RateLimiter limiter, boolean is_upload)
           
 void requestAllocationComplete()
           
 boolean requestAllocationStarts(int[] base_priorities)
           
 void setOptimisticUnchoke(boolean is_optimistic)
           
 void setPriorityConnection(boolean is_priority)
           
 void setSnubbed(boolean b)
           
 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)
           
 
Methods inherited from class org.gudy.azureus2.core3.logging.LogRelation
propogatedRelationText, queryForClass, queryForClass
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

manager

protected PeerManagerImpl manager

delegate

protected PEPeer delegate
Constructor Detail

PeerImpl

protected PeerImpl(PEPeer _delegate)
don't use me, use PeerManagerImpl.getPeerForPEPeer

Parameters:
_delegate -
Method Detail

bindConnection

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

getManager

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

getDelegate

public PEPeer getDelegate()

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

getState

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

getId

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

getIp

public java.lang.String getIp()
Description copied from interface: Peer
Get the peer's local TCP connection port.

Specified by:
getIp in interface Peer
Returns:
local port

getPort

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

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:

isLANLocal

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

getAvailable

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

isPieceAvailable

public 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

getStats

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

isIncoming

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

getPercentDone

public int getPercentDone()
Specified by:
getPercentDone in interface Peer
Returns:

getOutgoingRequestCount

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

getOutgoingRequestedPieceNumbers

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

getPercentDoneInThousandNotation

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

getClient

public java.lang.String getClient()
Specified by:
getClient 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

initialize

public void initialize()

getExpiredRequests

public java.util.List getExpiredRequests()
Specified by:
getExpiredRequests in interface Peer

getRequests

public java.util.List getRequests()
Specified by:
getRequests in interface Peer

getNumberOfRequests

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

getMaximumNumberOfRequests

public int getMaximumNumberOfRequests()
Specified by:
getMaximumNumberOfRequests 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

cancelRequest

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

addRequest

public boolean addRequest(PeerReadRequest request)
Specified by:
addRequest 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

close

public void close(java.lang.String reason,
                  boolean closedOnError,
                  boolean attemptReconnect)
Specified by:
close in interface Peer

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
Returns:

writeBytes

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

closed

protected void closed()

getPercentDoneOfCurrentIncomingRequest

public int getPercentDoneOfCurrentIncomingRequest()
Specified by:
getPercentDoneOfCurrentIncomingRequest in interface Peer

getPercentDoneOfCurrentOutgoingRequest

public int getPercentDoneOfCurrentOutgoingRequest()
Specified by:
getPercentDoneOfCurrentOutgoingRequest in interface Peer

addListener

public void addListener(PeerListener l)
Description copied from interface: Peer
Add peer listener.

Specified by:
addListener in interface Peer

removeListener

public void removeListener(PeerListener l)
Description copied from interface: Peer
Remove peer listener.

Specified by:
removeListener in interface Peer

addListener

public void addListener(PeerListener2 l)
Description copied from interface: Peer
Add peer listener.

Specified by:
addListener in interface Peer

removeListener

public void removeListener(PeerListener2 l)
Description copied from interface: Peer
Remove peer listener.

Specified by:
removeListener 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

setUserData

public void setUserData(java.lang.Object key,
                        java.lang.Object value)
Specified by:
setUserData in interface Peer

getUserData

public java.lang.Object getUserData(java.lang.Object key)
Specified by:
getUserData in interface Peer

equals

public boolean equals(java.lang.Object other)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

getPEPeer

public PEPeer getPEPeer()
Core use only. This is not propogated to the plugin interface

Returns:
PEPeer object associated with the plugin Peer object

getRelationText

public java.lang.String getRelationText()
Description copied from class: LogRelation
A short description of what your class holds that can be printed by the logger

Overrides:
getRelationText in class LogRelation
Returns:

getQueryableInterfaces

public java.lang.Object[] getQueryableInterfaces()
Description copied from class: LogRelation
Query this class for a reference to another class that it may hold

Overrides:
getQueryableInterfaces in class LogRelation
Returns:
If found, the class desired. Otherwise, null.

getHandshakeReservedBytes

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