Package org.gudy.azureus2.core3.peer

Examples of org.gudy.azureus2.core3.peer.PEPeer


    long  upSpeedSetMax    = 0;
    long  maxUp        = 0;
   
    if (hasSelection){
      for (int i = 0; i < peers.length; i++) {
        PEPeer peer = (PEPeer)peers[i];

        try {
          int maxul = peer.getStats().getUploadRateLimitBytesPerSecond();
         
          maxUp += maxul * 4;
         
          if (maxul == 0) {
            upSpeedUnlimited = true;
          }else{
            if ( maxul > upSpeedSetMax ){
              upSpeedSetMax  = maxul;
            }
          }
          if (maxul == -1) {
            maxul = 0;
            upSpeedDisabled = true;
          }
          totalUpSpeed += maxul;

          int maxdl = peer.getStats().getDownloadRateLimitBytesPerSecond();
         
          maxDown += maxdl * 4;
         
          if (maxdl == 0) {
            downSpeedUnlimited = true;
          }else{
            if ( maxdl > downSpeedSetMax ){
              downSpeedSetMax  = maxdl;
            }
          }
          if (maxdl == -1) {
            maxdl = 0;
            downSpeedDisabled = true;
          }
          totalDownSpeed += maxdl;

        } catch (Exception ex) {
          Debug.printStackTrace(ex);
        }
      }
    }
   
    if (download_specific) {
      final MenuItem block_item = new MenuItem(menu, SWT.CHECK);
      PEPeer peer = (PEPeer) tv.getFirstSelectedDataSource();
 
      if ( peer == null || peer.getManager().getDiskManager().getRemainingExcludingDND() > 0 ){
        // disallow peer upload blocking when downloading
        block_item.setSelection(false);
        block_item.setEnabled(false);
      }
      else {
        block_item.setEnabled(true);
        block_item.setSelection(peer.isSnubbed());
      }
     
      final boolean newSnubbedValue = !peer.isSnubbed();
 
      Messages.setLanguageText(block_item, "PeersView.menu.blockupload");
      block_item.addListener(SWT.Selection, new TableSelectedRowsListener(tv) {
        public void run(TableRowCore row) {
          PEPeer peer = ((PEPeer) row.getDataSource(true));
          peer.setSnubbed(newSnubbedValue);
        }
      });
    }

    final MenuItem ban_item = new MenuItem(menu, SWT.PUSH);

    Messages.setLanguageText(ban_item, "PeersView.menu.kickandban");
    ban_item.addListener(SWT.Selection, new TableSelectedRowsListener(tv) {
      public void run(TableRowCore row) {
        PEPeer peer = (PEPeer) row.getDataSource(true);
        String msg = MessageText.getString("PeersView.menu.kickandban.reason");
        IpFilterManagerFactory.getSingleton().getIPFilter().ban(peer.getIp(),
            msg, true );
        peer.getManager().removePeer(peer);
      }
    });

    // === advanced menu ===

View Full Code Here


  private static void setSelectedPeersUpSpeed(int speed, TableView tv) {     
    Object[] peers = tv.getSelectedDataSources().toArray();
    if(peers.length > 0) {           
      for (int i = 0; i < peers.length; i++) {
        try {
          PEPeer peer = (PEPeer)peers[i];
          peer.getStats().setUploadRateLimitBytesPerSecond(speed);
        } catch (Exception e) {
          Debug.printStackTrace( e );
        }
      }
    }
View Full Code Here

  private static void setSelectedPeersDownSpeed(int speed, TableView tv) {     
    Object[] peers = tv.getSelectedDataSources().toArray();
    if(peers.length > 0) {           
      for (int i = 0; i < peers.length; i++) {
        try {
          PEPeer peer = (PEPeer)peers[i];
          peer.getStats().setDownloadRateLimitBytesPerSecond(speed);
        } catch (Exception e) {
          Debug.printStackTrace( e );
        }
      }
    }
View Full Code Here

 
        next_optimistics.addLast( helper );   //add back at end
       
        if( failed_helpers == null || !failed_helpers.contains( helper ) ) {   //pre-emptive check to see if we've already tried this helper
         
          PEPeer peer;
         
          if( helper.isSeeding() ) {
            peer = seed_ranker.getNextOptimisticPeer( helper.getAllPeers() );
          }
          else {
View Full Code Here

   
   
    LinkedList<UploadSession> best_sessions = new LinkedList<UploadSession>();
   
    for( Iterator<PEPeer> it = best.iterator(); it.hasNext(); ) {
      PEPeer peer = it.next();
      UploadSession session = new UploadSession( peer, UploadSession.TYPE_DOWNLOAD );
      best_sessions.add( session );
    }
   
    return best_sessions;
View Full Code Here

     long[] bests = new long[ max_to_unchoke ]//ensure we never rank more peers than needed
    
   
    //fill slots with peers who we are currently downloading the fastest from
    for( int i=0; i < all_peers.size(); i++ ) {
      PEPeer peer = all_peers.get( i );

      if( peer.isInteresting() && UnchokerUtil.isUnchokable( peer, false ) ) {  //viable peer found
        long rate = peer.getStats().getSmoothDataReceiveRate();
        if( rate > 256 ) {  //filter out really slow peers
          UnchokerUtil.updateLargestValueFirstSort( rate, bests, peer, best_peers, 0 );
        }
      }
    }
   
   
    //if we havent yet picked enough slots
    if( best_peers.size() < max_to_unchoke ) { 
      int start_pos = best_peers.size();
     
      //fill the remaining slots with peers that we have downloaded from in the past
      for( int i=0; i < all_peers.size(); i++ ) {
      PEPeer peer = all_peers.get( i );

        if( peer.isInteresting() && UnchokerUtil.isUnchokable( peer, false ) && !best_peers.contains( peer ) ) {  //viable peer found
          long uploaded_ratio = peer.getStats().getTotalDataBytesSent() / (peer.getStats().getTotalDataBytesReceived() + (DiskManager.BLOCK_SIZE-1));
          //make sure we haven't already uploaded several times as much data as they've sent us
          if( uploaded_ratio <3) {
            UnchokerUtil.updateLargestValueFirstSort( peer.getStats().getTotalDataBytesReceived(), bests, peer, best_peers, start_pos );
         
        }
      }
    }
   
View Full Code Here

             
              rotate = true;
             
            }else{
           
              PEPeer peer = peers.get(0);
             
              if ( peer.getStats().getDataReceiveRate() < 1024 ){
               
                rotate = true;
              }
            }
          }
View Full Code Here

  public static ArrayList<PEPeer> getNextOptimisticPeers( ArrayList<PEPeer> all_peers, boolean factor_reciprocated, boolean allow_snubbed, int num_needed ) {
    //find all potential optimistic peers
    ArrayList<PEPeer> optimistics = new ArrayList<PEPeer>();
    for( int i=0; i < all_peers.size(); i++ ) {
      PEPeer peer = all_peers.get( i );
     
      if( isUnchokable( peer, false ) && peer.isChokedByMe() ) {
        optimistics.add( peer );
      }
    }
   
    if( optimistics.isEmpty() && allow_snubbed ) {  //try again, allowing snubbed peers as last resort
      for( int i=0; i < all_peers.size(); i++ ) {
        PEPeer peer = all_peers.get( i );
       
        if( isUnchokable( peer, true ) && peer.isChokedByMe() ) {
          optimistics.add( peer );
        }
      }
    }

    if( optimistics.isEmpty() )  return null//no unchokable peers avail
   
    //factor in peer reciprocation ratio when picking optimistic peers
   
    ArrayList<PEPeer>  result = new ArrayList<PEPeer>(optimistics.size());
   
    if ( factor_reciprocated ){
     
      ArrayList<PEPeerTransport> ratioed_peers = new ArrayList<PEPeerTransport>( optimistics.size() );
      long[] ratios = new long[ optimistics.size() ];
      Arrays.fill( ratios, Long.MIN_VALUE );
       
      //order by upload ratio
      for( int i=0; i < optimistics.size(); i++ ) {
        PEPeer peer = optimistics.get( i );

        //score of >0 means we've uploaded more, <0 means we've downloaded more
        long score = peer.getStats().getTotalDataBytesSent() - peer.getStats().getTotalDataBytesReceived();

        UnchokerUtil.updateLargestValueFirstSort( score, ratios, peer, ratioed_peers, 0 )//higher value = worse score
      }
     
    for (int i=0;i<num_needed && ratioed_peers.size() > 0;i++ ){
View Full Code Here

    }
   
    //do unchokes
    if( peers_to_unchoke != null ) {
      for( int i=0; i < peers_to_unchoke.size(); i++ ) {
        final PEPeer peer = peers_to_unchoke.get( i );
     
        if( peer.isChokedByMe() ) {   //TODO add UnchokerUtil.isUnchokable() test here to be safe?
          peer.sendUnChoke();
        }
      }   
    }
  }
View Full Code Here

    ArrayList<PEPeer> to_unchoke = new ArrayList<PEPeer>();
   
    //count all the currently unchoked peers
    int num_unchoked = 0;
    for( int i=0; i < all_peers.size(); i++ ) {
      PEPeer peer = all_peers.get( i );
      if( !peer.isChokedByMe() )  num_unchoked++;
    }
   
    //if not enough unchokes
    int needed = max_to_unchoke - num_unchoked;
    if( needed > 0 ) {
      for( int i=0; i < needed; i++ ) {
      PEPeer peer = UnchokerUtil.getNextOptimisticPeer( all_peers, true, true );
        if( peer == null break//no more new unchokes avail
        to_unchoke.add( peer );
        peer.setOptimisticUnchoke( true );
      }
    }
   
    return to_unchoke;
  }
View Full Code Here

TOP

Related Classes of org.gudy.azureus2.core3.peer.PEPeer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.