Package org.gudy.azureus2.core3.util

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


      long    offset,
      int      length )
   
      throws IOException
    {
      AESemaphore  sem;
     
      synchronized( lock ){
       
        if ( raf.length() > offset ){
         
          raf.seek( offset );
         
          return( raf.read( buffer, 0, length ));
       
       
        if ( stream_details == null ){
         
          if ( stream_got_eof ){
           
            return( -1 );
          }
         
          throw( new IOException( "Premature end of stream (read)" ));
        }
       
        sem = new AESemaphore( "DMS:block" );
       
        waiters.add( sem );
      }
     
      try{
        sem.reserve( 1000 );
     
      }finally{
     
        synchronized( lock ){
View Full Code Here


            if ( user_agent != null ){
           
              current_request.setUserAgent( user_agent );
            }
           
            final AESemaphore  sem = new AESemaphore( "waiter" );
            final Throwable[]  error = {null};
           
            current_request.addListener(
              new DiskManagerListener()
              {
                private int write_pos   = pos;
                private int  rem      = len;
               
                public void
                eventOccurred(
                  DiskManagerEvent  event )
                {
                  int  type = event.getType();
                 
                  if ( type == DiskManagerEvent.EVENT_TYPE_SUCCESS ){
                   
                    PooledByteBuffer p_buffer = event.getBuffer();
                   
                    try{
                      ByteBuffer  bb = p_buffer.toByteBuffer();
                                         
                      bb.position( 0 );
                     
                      int  read = bb.remaining();

                      bb.get( buffer, write_pos, read );
                     
                      write_pos   += read;
                      rem      -= read;
                     
                      if ( rem == 0 ){
                       
                        sem.release();
                      }
                    }finally{
                     
                      p_buffer.returnToPool();
                    }
                  }else if ( type == DiskManagerEvent.EVENT_TYPE_FAILED ){
                 
                    error[0] = event.getFailure();
                   
                    sem.release();
                  }
                }
              });
           
            current_request.run();
           
            while( true ){
             
              if ( sem.reserve( 1000 )){
               
                if ( error[0] != null ){
                 
                  throw( new IOException( Debug.getNestedExceptionMessage( error[0] )));
                }
View Full Code Here

  {
    final UIManager ui_manager = PluginInitializer.getDefaultInterface().getUIManager();
   
    if ( ui_manager.getUIInstances().length == 0 ){
     
      final AESemaphore sem = new AESemaphore( "waitforui") ;
    
      ui_manager.addUIListener(
          new UIManagerListener()
          {
            public void
            UIAttached(
              UIInstance    instance )
            {
              ui_manager.removeUIListener( this );
             
              sem.releaseForever();
            }
           
            public void
            UIDetached(
              UIInstance    instance )
            {
            }
          });
     
        // UIAttached is only fired once initialisation is complete. However, the instance
        // can be made available prior to this and there is a case where this event is blocking
        // the firing of the completion event. therefore pick it up if present directly
     
      long  time_to_go = millis_to_wait_for_attach;
     
      while( ui_manager.getUIInstances().length == 0 ){
       
        if ( sem.reserve( 1000 )){
         
          break;
        }
       
        time_to_go -= 1000;
View Full Code Here

    if ( display.isDisposed()){
     
      return( null );
    }
   
    final AESemaphore  sem = new AESemaphore("NetworkClassifier");
   
    final classifierDialog[]  dialog = new classifierDialog[1];
   
    try{
      Utils.execSWTThread(
        new AERunnable()
        {
          public void
          runSupport()
          {
            dialog[0] = new classifierDialog( sem, display, description, tracker_networks );
          }
        });
    }catch( Throwable e ){
     
      Debug.printStackTrace( e );
     
      return( null );
    }
   
    sem.reserve();
   
    return( dialog[0].getSelection());
  }
View Full Code Here

    byte[]    hash )
  {
    final int[]  seeds     = {0};
    final int[] leechers   = {0};
   
    final AESemaphore  sem = new AESemaphore( "DHTTrackerPlugin:scrape" );
   
    dht.get(hash,
        "Scrape for '" + ByteFormatter.nicePrint( hash ) + "'",
        DHTPlugin.FLAG_DOWNLOADING,
        NUM_WANT,
        SCRAPE_TIMEOUT,
        false, false,
        new DHTPluginOperationListener()
        {
          public void
          diversified()
          {
          }
         
          public void
          starts(
            byte[]         key )
          {
          }
         
          public void
          valueRead(
            DHTPluginContact  originator,
            DHTPluginValue    value )
          {           
            if (( value.getFlags() & DHTPlugin.FLAG_DOWNLOADING ) == 1 ){
             
              leechers[0]++;
             
            }else{
             
              seeds[0]++;
            }
          }
         
          public void
          valueWritten(
            DHTPluginContact  target,
            DHTPluginValue    value )
          {
          }

          public void
          complete(
            byte[]  key,
            boolean  timeout_occurred )
          {
            sem.release();
          }
        });

    sem.reserve();
   
    return(
        new DownloadScrapeResult()
        {
          public Download
View Full Code Here

 
      properties.put( UpdateCheckInstance.PT_UI_STYLE, UpdateCheckInstance.PT_UI_STYLE_NONE );
       
      properties.put(UpdateCheckInstance.PT_UI_DISABLE_ON_SUCCESS_SLIDEY, true);

      final AESemaphore sem = new AESemaphore("emp install");
      final boolean[] result = new boolean[1];
   
      instance =
        installer.install(
          new InstallablePlugin[]{ sp },
          false,
          properties,
          new PluginInstallationListener() {

            public void
            completed()
            {
              result[0] = true;
              if(listener != null) {
                listener.finished();
              }
              sem.release();
            }
           
            public void
            cancelled()
            {
              result[0] = false;
              if(listener != null) {
                listener.finished();
              }
              sem.release();
            }
           
            public void
            failed(
              PluginException  e )
            {
              result[0] = false;
              if(listener != null) {
                listener.finished();
              }
              sem.release();
            }
          });
   
      boolean kill_it;
     
      synchronized( this ){
       
        kill_it = cancelled;
      }

      if ( kill_it ){
       
        instance.cancel();
       
        return( false );
      }
     
      instance.addListener(
        new UpdateCheckInstanceListener() {

          public void
          cancelled(
            UpdateCheckInstance    instance )
          {             
          }
         
          public void
          complete(
            UpdateCheckInstance    instance )
          {
              Update[] updates = instance.getUpdates();
            
             for ( final Update update: updates ){
              
               ResourceDownloader[] rds = update.getDownloaders();
            
               for ( ResourceDownloader rd: rds ){
                
                 rd.addListener(
                   new ResourceDownloaderAdapter()
                   {
                     public void
                     reportActivity(
                       ResourceDownloader  downloader,
                       String        activity )
                     {
                      
                     }
                    
                     public void
                     reportPercentComplete(
                       ResourceDownloader  downloader,
                       int          percentage )
                     {
                       if(listener != null) {
                         listener.progress(percentage);
                       }
                     }
                   });
               }
             }
          }
        });
         
      sem.reserve();
     
      return result[0];
     
    }catch( Throwable e ){
     
View Full Code Here

    final boolean  end_of_day )
  {
      // problems here at end of day regarding devices that hang and cause AZ to hang around
      // got ages before terminating
   
    final AESemaphore sem = new AESemaphore( "UPnPPlugin:closeTimeout" );
   
     
    new AEThread( "UPnPPlugin:closeTimeout" , true )
    {
      public void
      runSupport()
      {
        try{
          for (int i=0;i<mappings.size();i++){
           
            UPnPMapping  mapping = (UPnPMapping)mappings.get(i);
           
            if ( !mapping.isEnabled()){
             
              continue;
            }
           
            for (int j=0;j<services.size();j++){
             
              UPnPPluginService  service = (UPnPPluginService)services.get(j);
             
              service.removeMapping( log, mapping, end_of_day );
            }
          }
        }finally{
         
          sem.release();
        }
      }
    }.start();
 
 
    if ( !sem.reserve( end_of_day?15*1000:0 )){
   
      String  msg = "A UPnP device is taking a long time to release its port mappings, consider disabling this via the UPnP configuration.";

      if ( upnp_log_listener != null ){
       
View Full Code Here

    {
      engine  = _engine;
     
      if ( !generator.supportsAsync()){
       
        wait_sem = new AESemaphore( "RSPS:waiter" );
      }
    }
View Full Code Here

  // @see org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloaderListener#completed(org.gudy.azureus2.plugins.utils.resourcedownloader.ResourceDownloader, java.io.InputStream)
  public boolean completed(ResourceDownloader downloader, InputStream data) {
    downloader.removeListener(this);
    if (!nextUpdate()) {
      // fire in another thread so completed function can exit
      AEThread thread = new AEThread("AllDownloadsComplete", true) {
        public void runSupport() {
          allDownloadsComplete();
        }
      };
      thread.start();
    }
    return true;
  }
View Full Code Here

      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

TOP

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

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.