Package org.gudy.azureus2.core3.util

Examples of org.gudy.azureus2.core3.util.AsyncDispatcher


      new Listener()
      {
        public void
        handleEvent(Event event)
        {
          new AEThread2("GenerateNetDiag", true)
          {
            public void run() {
              StringWriter sw = new StringWriter();
             
              PrintWriter  pw = new PrintWriter( sw );
View Full Code Here


    progress.setLayoutData( data );
   
    parent.layout( true, true );
   
    new AEThread2( "SimpleInstallerUI", true )
    {
      public void
      run()
      {
        try{
View Full Code Here

  {
    synchronized( this ){
     
      if ( add_file_install_dispatcher == null ){
       
        add_file_install_dispatcher = new AsyncDispatcher();
      }
     
      add_file_install_dispatcher.dispatch(
        new AERunnable()
        {
View Full Code Here

    ResultListener  listener =
      new ResultListener()
      {
          //   single thread listener calls
     
        private AsyncDispatcher dispatcher = new AsyncDispatcher( 5000 );

        final private Map<Engine,List<Result[]>>  pending_results = new HashMap<Engine,List<Result[]>>();
       
        final private Map<Engine,Set<String>>  result_hashes = new HashMap<Engine, Set<String>>();
       
        public void
        contentReceived(
          final Engine engine,
          final String content )
        {
          dispatcher.dispatch(
              new AERunnable()
              {
                public void
                runSupport()
                {
                  original_listener.contentReceived( engine, content );
                }
              });
        }
       
        public void
        matchFound(
          final Engine   engine,
          final String[]   fields )
        {
          dispatcher.dispatch(
              new AERunnable()
              {
                public void
                runSupport()
                {
                  original_listener.matchFound( engine, fields );
                }
              })
        }
       
        public void
        resultsReceived(
          final Engine   engine,
          final Result[]   results )
        {
          dispatcher.dispatch(
            new AERunnable()
            {
              public void
              runSupport()
              {
                Result[] results_to_return = null;
               
                if ( batch_millis > 0 ){
                 
                  List<Result[]> list = pending_results.get( engine );
                                   
                  if ( list == null ){
                                     
                    results_to_return = results;
                   
                    pending_results.put( engine, new ArrayList<Result[]>());
                   
                    new DelayedEvent(
                      "SearchBatcher",
                      batch_millis,
                      new AERunnable()
                      {
                        public void
                        runSupport()
                        {
                          dispatcher.dispatch(
                            new AERunnable()
                            {
                              public void
                              runSupport()
                              {
                                batchResultsComplete( engine );
                              }
                            });
                        }
                      });
                  }else{
                                                             
                    list.add( results );
                  }
                }else{
               
                  results_to_return = results;
                }
               
                if ( results_to_return != null ){
                 
                  results_to_return = truncateResults( engine, results_to_return, max_results_per_engine );
                 
                  original_listener.resultsReceived( engine, results_to_return );
                }
              }
            });
        }
     
        public void
        resultsComplete(
          final Engine engine )
        {
          dispatcher.dispatch(
              new AERunnable()
              {
                public void
                runSupport()
                {
                  if ( batch_millis > 0 ){

                    batchResultsComplete( engine );
                  }
                 
                  original_listener.resultsComplete( engine );
                }
              });
        }
     
        protected void
        batchResultsComplete(
          Engine engine )
        {
          List<Result[]> list = pending_results.remove( engine );
         
          if ( list != null ){
           
            List<Result> x = new ArrayList<Result>();
           
            for ( Result[] y: list ){
             
              x.addAll( Arrays.asList( y ));
            }
           
            Result[] results = x.toArray( new Result[ x.size()]);
         
            results = truncateResults( engine, results, max_results_per_engine );
         
            original_listener.resultsReceived( engine, results );
          }
        }
       
        protected Result[]
               truncateResults(
                 Engine    engine,
                 Result[]   a_results,
                 int      max )
               {
          Set<String>  hash_set = result_hashes.get( engine );
         
          if ( hash_set == null ){
           
            hash_set = new HashSet<String>();
           
            result_hashes.put( engine, hash_set );
          }
           
          List<Result>  results = new ArrayList<Result>( a_results.length );
         
          for ( Result r: a_results ){
             
            String name = r.getName();
             
            if ( name == null || name.trim().length() == 0 ){
               
              continue;
            }
         
            if ( rem_dups ){

              String hash = r.getHash();
             
              if (   hash == null ||
                  hash.length() == 0 ){
               
                results.add( r );
               
              }else{
               
                if ( !hash_set.contains( hash )){
                 
                  results.add( r );
                 
                  hash_set.add( hash );
                }
              }
            }else{
             
              results.add( r );
            }
          }
         
                 if ( max < results.size() ){
                
                   log( "Truncating search results for " + engine.getName() + " from " + results.size() + " to " + max );
                  
                   Collections.sort(
                     results,
                     new Comparator<Result>()
                     {
                       Map<Result,Float>  ranks = new HashMap<Result, Float>();
                      
                       public int
                       compare(
                         Result r1,
                         Result r2)
                       {           
                         Float  rank1 = (Float)ranks.get(r1);
                        
                         if ( rank1 == null ){ 
                           rank1 = new Float(r1.getRank());
                           ranks.put( r1, rank1 );
                         }
                        
                         Float  rank2 = (Float)ranks.get(r2);
                        
                         if ( rank2 == null ){ 
                           rank2 = new Float(r2.getRank());
                           ranks.put( r2, rank2 );
                         }
                        
                         return( -rank1.compareTo( rank2 ));
                       }
                     });
                
                   Result[] x = new Result[max];
                  
                   int  pos = 0;
                  
                   while( pos < max ){
                  
                     x[pos] = results.get( pos );
                    
                     pos++;
                   }
                  
                   return( x );
                  
                 }else{
                  
                   return( results.toArray( new Result[ results.size()] ));
                 }
               }
       
        public void
        engineFailed(
          final Engine   engine,
          final Throwable  e )
        {
          dispatcher.dispatch(
              new AERunnable()
              {
                public void
                runSupport()
                {
                  original_listener.engineFailed( engine, e );
                }
              });
        }
       
        public void
        engineRequiresLogin(
          final Engine   engine,
          final Throwable  e )
        {
          dispatcher.dispatch(
              new AERunnable()
              {
                public void
                runSupport()
                {
View Full Code Here

      }
    }
   
    if ( update_check_timer != null ){
     
      new AsyncDispatcher().dispatch(
          new AERunnable()
          {
            public void
            runSupport()
            {
View Full Code Here

    }

    if (   !initialisation_complete_sem.isReleasedForever() ||
        ( dht_plugin != null && dht_plugin.isInitialising())){
     
      AsyncDispatcher dispatcher = new AsyncDispatcher();
 
      dispatcher.dispatch(
        new AERunnable()
        {
          public void
          runSupport()
          {
View Full Code Here

          break;
        }
       
        payload_buffer.flip();
       
        messages.add( new GenericMessage( msg_type, msg_desc, new DirectByteBuffer( payload_buffer ), false ));
       
        buffers[1= null;
      }
     
      total_read += bytes_read;
View Full Code Here

    if( core_msg == null ) {
      return plug_msg.create( data );
    }
   
    try{
      return new MessageAdapter( core_msg.deserialize( new DirectByteBuffer( data ), (byte)1 ) );
    }
    catch( com.aelitis.azureus.core.peermanager.messaging.MessageException e ) {
      throw new MessageException( e.getMessage() );
    }
  }
View Full Code Here

    }
   
    ByteBuffer[] bbs = plug_msg.getPayload();
    DirectByteBuffer[] dbbs = new DirectByteBuffer[ bbs.length ]//TODO cache it???
    for( int i=0; i < bbs.length; i++ ) {
      dbbs[i] = new DirectByteBuffer( bbs[i] );
    }
    return dbbs;
  }
View Full Code Here

            public void run() {
              StringWriter sw = new StringWriter();
             
              PrintWriter  pw = new PrintWriter( sw );
                 
              IndentWriter iw = new IndentWriter( pw );
             
              NetworkAdmin admin = NetworkAdmin.getSingleton();
             
              admin.generateDiagnostics( iw );
             
View Full Code Here

TOP

Related Classes of org.gudy.azureus2.core3.util.AsyncDispatcher

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.