Methods Summary |
---|
public void | addListener(PeerManagerListener l)
try{
this_mon.enter();
final Map peer_map = new HashMap();
PEPeerManagerListener core_listener = new PEPeerManagerListener() {
public void peerAdded( PEPeerManager manager, PEPeer peer ) {
PeerImpl pi = getPeerForPEPeer( peer );
peer_map.put( peer, pi );
l.peerAdded( PeerManagerImpl.this, pi );
}
public void peerRemoved( PEPeerManager manager, PEPeer peer ) {
PeerImpl pi = (PeerImpl)peer_map.remove( peer );
if ( pi == null ){
// somewhat inconsistently we get told here about the removal of
// peers that never connected (and weren't added)
// Debug.out( "PeerManager: peer not found");
}
else{
l.peerRemoved( PeerManagerImpl.this, pi );
}
}
public void
destroyed()
{
}
};
listener_map.put( l, core_listener );
manager.addListener( core_listener );
}finally{
this_mon.exit();
}
|
public void | addPeer(Peer peer)
// no private check here, we come through here for webseeds for example
manager.addPeer(mapForeignPeer( peer ));
|
public void | addPeer(java.lang.String ip_address, int tcp_port)
checkIfPrivate();
manager.addPeer( ip_address, tcp_port, 0, NetworkManager.getCryptoRequired( NetworkManager.CRYPTO_OVERRIDE_NONE ));
|
public void | addPeer(java.lang.String ip_address, int tcp_port, boolean use_crypto)
checkIfPrivate();
manager.addPeer( ip_address, tcp_port, 0, use_crypto );
|
public void | addPeer(java.lang.String ip_address, int tcp_port, int udp_port, boolean use_crypto)
checkIfPrivate();
manager.addPeer( ip_address, tcp_port, udp_port, use_crypto );
|
protected void | checkIfPrivate()
Download dl;
try{
dl = getDownload();
}catch( Throwable e ){
// if this didn't work then nothing much else will so just fall through
return;
}
Torrent t = dl.getTorrent();
if ( t != null ){
if ( t.isPrivate()){
throw( new RuntimeException( "Torrent is private, peer addition not permitted" ));
}
}
|
public PeerStats | createPeerStats(Peer peer)
PEPeer delegate = mapForeignPeer( peer );
return( new PeerStatsImpl( this, peer, manager.createPeerStats( delegate )));
|
public PEPeerManager | getDelegate()
return( manager );
|
public org.gudy.azureus2.plugins.disk.DiskManager | getDiskManager()
return( new DiskManagerImpl( manager.getDiskManager()));
|
public Download | getDownload()
return( DownloadManagerImpl.getDownloadStatic( manager.getDiskManager().getTorrent()));
|
public int | getDownloadRateLimitBytesPerSecond()
return( manager.getDownloadRateLimitBytesPerSecond());
|
public static PeerImpl | getPeerForPEPeer(PEPeer pe_peer)
PeerImpl peer = (PeerImpl)pe_peer.getData( PEPEER_DATA_KEY );
if ( peer == null ){
peer = new PeerImpl( pe_peer );
pe_peer.setData( PEPEER_DATA_KEY, peer );
}
return( peer );
|
public static org.gudy.azureus2.pluginsimpl.local.peers.PeerManagerImpl | getPeerManager(PEPeerManager _manager)
try{
pm_map_mon.enter();
PeerManagerImpl res = (PeerManagerImpl)_manager.getData( "PluginPeerManager" );
if ( res == null ){
res = new PeerManagerImpl( _manager );
_manager.setData( "PluginPeerManager", res );
}
return( res );
}finally{
pm_map_mon.exit();
}
|
public Peer[] | getPeers()
List l = manager.getPeers();
Peer[] res= new Peer[l.size()];
// this is all a bit shagged as we should maintain the PEPeer -> Peer link rather
// than continually creating new PeerImpls...
for (int i=0;i<res.length;i++){
res[i] = getPeerForPEPeer((PEPeer)l.get(i));
}
return( res );
|
public Peer[] | getPeers(java.lang.String address)
List l = manager.getPeers( address );
Peer[] res= new Peer[l.size()];
// this is all a bit shagged as we should maintain the PEPeer -> Peer link rather
// than continually creating new PeerImpls...
for (int i=0;i<res.length;i++){
res[i] = getPeerForPEPeer((PEPeer)l.get(i));
}
return( res );
|
public PeerDescriptor[] | getPendingPeers(java.lang.String address)
return( manager.getPendingPeers( address ));
|
public Piece[] | getPieces()
if ( piece_facades == null ){
pieceFacade[] pf = new pieceFacade[manager.getDiskManager().getNbPieces()];
for (int i=0;i<pf.length;i++){
pf[i] = new pieceFacade(i);
}
piece_facades = pf;
}
return( piece_facades );
|
public PeerManagerStats | getStats()
return(new PeerManagerStatsImpl( manager));
|
public long | getTimeSinceConnectionEstablished(Peer peer)
if ( peer instanceof PeerImpl ){
return(((PeerImpl)peer).getDelegate().getTimeSinceConnectionEstablished());
}else{
PeerForeignDelegate delegate = lookupForeignPeer( peer );
if ( delegate != null ){
return( delegate.getTimeSinceConnectionEstablished());
}else{
return( 0 );
}
}
|
public int | getUploadRateLimitBytesPerSecond()
return( manager.getUploadRateLimitBytesPerSecond());
|
public boolean | isSeeding()
// this is the wrong thing to check for seeding..
return( manager.getDiskManager().getRemainingExcludingDND() == 0 ); //yuck
|
public boolean | isSuperSeeding()
return( manager.isSuperSeedMode());
|
protected PeerForeignDelegate | lookupForeignPeer(Peer _foreign)
return((PeerForeignDelegate)_foreign.getUserData( PeerManagerImpl.class ));
|
public PEPeer | mapForeignPeer(Peer _foreign)
if ( _foreign instanceof PeerImpl ){
return(((PeerImpl)_foreign).getDelegate());
}
synchronized( foreign_map ){
PEPeer local = (PEPeer)foreign_map.get( _foreign );
if( local == null ){
if ( destroyed ){
Debug.out( "Peer added to destroyed peer manager" );
return( null );
}
local = new PeerForeignDelegate( this, _foreign );
_foreign.setUserData( PeerManagerImpl.class, local );
foreign_map.put( _foreign, local );
}
return( local );
}
|
public java.util.List | mapForeignPeers(Peer[] _foreigns)
List res = new ArrayList();
for (int i=0;i<_foreigns.length;i++){
PEPeer local = mapForeignPeer( _foreigns[i]);
// could already be there if torrent contains two identical seeds (for whatever reason)
if ( !res.contains( local )){
res.add( local );
}
}
return( res );
|
public void | removeListener(PeerManagerListener l)
try{
this_mon.enter();
PEPeerManagerListener core_listener = (PEPeerManagerListener)listener_map.remove( l );
if ( core_listener != null ){
manager.removeListener( core_listener );
}
}finally{
this_mon.exit();
}
|
public void | removePeer(Peer peer)
manager.removePeer(mapForeignPeer( peer ));
|
protected void | removePeer(Peer peer, java.lang.String reason)
manager.removePeer(mapForeignPeer( peer ), reason );
|
public void | requestCancelled(PeerReadRequest request, Peer sender)
manager.requestCanceled((DiskManagerReadRequest)request );
|
public void | requestComplete(PeerReadRequest request, org.gudy.azureus2.plugins.utils.PooledByteBuffer data, Peer sender)
manager.writeBlock(
request.getPieceNumber(),
request.getOffset(),
((PooledByteBufferImpl)data).getBuffer(),
mapForeignPeer( sender ),
false);
PeerForeignDelegate delegate = lookupForeignPeer( sender );
if ( delegate != null ){
delegate.dataReceived();
}
|