Package org.gudy.azureus2.core3.util

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


         
          final ExternalIPCheckerService  service = services[i];
         
          if ( service.supportsCheck()){
 
            final AESemaphore  sem = new AESemaphore("Utilities:getExtIP");
           
            ExternalIPCheckerServiceListener  listener =
              new ExternalIPCheckerServiceListener()
              {
                public void
                checkComplete(
                  ExternalIPCheckerService  _service,
                  String            _ip )
                {
                  ip[0= _ip;
                 
                  sem.release();
                }
                 
                public void
                checkFailed(
                  ExternalIPCheckerService  _service,
                  String            _reason )
                {
                  sem.release();
                }
                 
                public void
                reportProgress(
                  ExternalIPCheckerService  _service,
                  String            _message )
                {
                }
              };
             
            services[i].addListener( listener );
           
            try{
             
              services[i].initiateCheck( 60000 );
             
              sem.reserve( 60000 );
             
            }finally{
             
              services[i].removeListener( listener );
            }
View Full Code Here


 
  public String
  reverseDNSLookup(
    InetAddress    address )
  {
    final AESemaphore  sem = new AESemaphore("Utilities:reverseDNS");
   
    final String[]  res = { null };
   
    IPToHostNameResolver.addResolverRequest(
          address.getHostAddress(),
          new IPToHostNameResolverListener()
          {
            public void
            IPResolutionComplete(
              String     result,
              boolean   succeeded )
            {
              if ( succeeded ){
               
                res[0] = result;
              }

              sem.release();
            }
          });
   
    sem.reserve( 60000 );
   
    return( res[0] );
  }
View Full Code Here

        {
          public void
          runSupport()
          {
            try{
              final AESemaphore done_sem = new AESemaphore( "PluginInstall:fio" );
                                 
              final UIManager ui_manager = StaticUtilities.getUIManager( 120*1000 );
                 
              new AEThread2( "PluginInstall:fio", true )
                {
                  public void
                  run()
                  {
                    if ( installer.isAlreadyInstalled()){
                                           
                      String details = MessageText.getString(
                          "fileplugininstall.duplicate.desc",
                          new String[]{ installer.getName(), installer.getVersion()});
                     
                      ui_manager.showMessageBox(
                          "fileplugininstall.duplicate.title",
                          "!" + details + "!",
                          UIManagerEvent.MT_OK );
 
                      done_sem.release();
                     
                    }else{
 
                      String details = MessageText.getString(
                          "fileplugininstall.install.desc",
                          new String[]{ installer.getName(), installer.getVersion()});
                                                   
                      long res = ui_manager.showMessageBox(
                          "fileplugininstall.install.title",
                          "!" + details + "!",
                          UIManagerEvent.MT_YES | UIManagerEvent.MT_NO );
                     
                      if ( res == UIManagerEvent.MT_YES ){
                     
                        try{
                          install(
                            new InstallablePlugin[]{ installer },
                            false,
                            true,
                            null,
                            new PluginInstallationListener()
                            {                     
                              public void
                              completed()
                              {
                                done_sem.release();
                              }
                             
                              public void
                              cancelled()
                              {
                                done_sem.release();
                              }
                             
                              public void
                              failed(
                                PluginException e )
                              {
                                done_sem.release();
                               
                                Debug.out( "Installation failed", e );
                              }
                            });
                         
                        }catch( Throwable e ){
                         
                          Debug.printStackTrace(e);
                         
                          done_sem.release();
                        }
                      }else if ( res == UIManagerEvent.MT_NO ){
                       
                        done_sem.release();
                       
                      }else{
                       
                        Debug.out( "Message box not handled" );
                       
                        done_sem.release();
                      }
                    }
                  }
                }.start();
 
           
              while( !done_sem.reserve( 60*1000 )){
               
                if ( add_file_install_dispatcher.getQueueSize() > 0 ){
                 
                  Debug.out( "File plugin install operation queued pending completion of previous" );
                }
View Full Code Here

    boolean        low_noise,
    final boolean    wait_until_done )
 
    throws PluginException
  {
    final AESemaphore sem = new AESemaphore( "FPI" );
   
    final PluginException[]  error = { null };
   
    installer.install(
      new InstallablePlugin[]{ this },
      shared,
      low_noise,
      null,
      new PluginInstallationListener()
      {
        public void
        completed()
        {
          sem.release();
        }
       
        public void
        cancelled()
        {
          failed( new PluginException( "Install cancelled" ));
        }
       
        public void
        failed(
          PluginException e )
        {
          error[0] = e;
         
          sem.release();
         
          if ( !wait_until_done ){
           
            Debug.out( "Install failed", e );
          }
        }
      });
   
    if ( wait_until_done ){
     
      sem.reserve();
     
      if ( error[0] != null ){
       
        throw( error[0] );
      }
View Full Code Here

  SemaphoreImpl(
    PluginInterface    pi )
  {
    synchronized( SemaphoreImpl.class ){
     
      sem  = new AESemaphore("Plugin " + pi.getPluginID() + ":" + next_sem_id++ );
    }
  }
View Full Code Here

                  }
                }
              }
            })
       
        final AESemaphore start_sem = new AESemaphore( "TiVo:CtrlListener" );
       
        new AEThread2( "TiVo:CtrlListener", true )
        {
          public void
          run()
          {
            start_sem.release();
           
            long  successful_accepts   = 0;
            long  failed_accepts    = 0;
   
            while( !( manager_destroyed || search_destroyed )){
             
              try{
                byte[] buf = new byte[8192];
               
                DatagramPacket packet = new DatagramPacket(buf, buf.length );
                       
                control_socket.receive( packet );
                 
                successful_accepts++;
               
                failed_accepts   = 0;
               
                if ( receiveBeacon( packet.getAddress(), packet.getData(), packet.getLength())){
                 
                  persistent = true;
                }
               
              }catch( SocketTimeoutException e ){
                             
              }catch( Throwable e ){
               
                if ( control_socket != null && !search_destroyed && !manager_destroyed ){
               
                  failed_accepts++;
               
                  log( "UDP receive on port " + CONTROL_PORT + " failed", e );
                }
               
                if (( failed_accepts > 100 && successful_accepts == 0 ) || failed_accepts > 1000 ){
                 
                  log( "    too many failures, abandoning" );
   
                  break;
                }
              }
            }       
          }
        }.start();
         
        if ( _async ){
         
          new DelayedEvent(
            "search:delay",
            5000,
            new AERunnable()
            {
              public void
              runSupport()
              {
                sendBeacon();
              }
            })
        }else{
         
          start_sem.reserve( 5000 );
       
          sendBeacon();
        }

        log( "Initiated device search" );
View Full Code Here

  {
    final int RES_CONNECT_FAILED  = 0;
    final int RES_SOCKS_FAILED    = 1;
    final int RES_OK        = 3;

    final AESemaphore  sem = new AESemaphore( "NetworkAdminSocksProxy:test" );
   
    final int[]  result = { RES_CONNECT_FAILED };
   
    final NetworkAdminException[]  error = { null };
   
    try{
      InetSocketAddress    socks_address = new InetSocketAddress( InetAddress.getByName( host ), Integer.parseInt(port));
     
      final InetSocketAddress  target_address = new InetSocketAddress( TARGET_HOST, TARGET_PORT );
     
      TCPConnectionManager.ConnectListener connect_listener =
        new TCPConnectionManager.ConnectListener()
      {
        public int
        connectAttemptStarted(
          int default_connect_timeout )
        { 
          return( default_connect_timeout );
        }
 
        public void
        connectSuccess(
          SocketChannel channel )
        {
          final TCPTransportImpl  transport =
            new TCPTransportImpl(
                (ProtocolEndpointTCP)ProtocolEndpointFactory.createEndpoint( ProtocolEndpoint.PROTOCOL_TCP, target_address ), false, false, null );
         
          transport.setFilter( TCPTransportHelperFilterFactory.createTransparentFilter( channel ));
 
          new ProxyLoginHandler(
              transport,
              target_address,
              new ProxyLoginHandler.ProxyListener()
              {
                public void
                connectSuccess()
                {
                  transport.close( "Done" );
                 
                  result[0]   = RES_OK;

                  sem.release();
                }
 
                public void
                connectFailure(
                  Throwable failure_msg )
                {
                  transport.close( "Proxy login failed" );
                 
                  result[0]   = RES_SOCKS_FAILED;
                  error[0= new NetworkAdminException( "Proxy connect failed", failure_msg );
                 
                  sem.release();
                }
              },
              version,
              user,
              password );
        }
 
        public void
        connectFailure(
          Throwable failure_msg )
        {
          result[0]   = RES_CONNECT_FAILED;
          error[0= new NetworkAdminException( "Connect failed", failure_msg );
         
          sem.release();
        }
      };
 
      TCPNetworkManager.getSingleton().getConnectDisconnectManager().requestNewConnection(
          socks_address, connect_listener, ProtocolEndpoint.CONNECT_PRIORITY_MEDIUM );
           
    }catch( Throwable e ){
     
      result[0]   = RES_CONNECT_FAILED;
      error[0= new NetworkAdminException( "Connect failed", e );
     
      sem.release();
    }
   
    if ( !sem.reserve(10000)){
     
      result[0]   = RES_CONNECT_FAILED;
      error[0]   = new NetworkAdminException( "Connect timeout" );
    }
   
View Full Code Here

      final DHTUDPPacketRequestPing  request =
          new DHTUDPPacketRequestPing( this, connection_id, local_contact, contact );
       
      stats.pingSent( request );

      final AESemaphore  sem = new AESemaphore( "DHTTransUDP:extping" );

      final InetSocketAddress[]  result = new InetSocketAddress[1];
     
      packet_handler.sendAndReceive(
        request,
        contact.getTransportAddress(),
        new DHTUDPPacketReceiver()
        {
          public void
          packetReceived(
            DHTUDPPacketReply  _packet,
            InetSocketAddress  from_address,
            long        elapsed_time )
          {
            try{
             
              if ( _packet instanceof DHTUDPPacketReplyPing ){
               
                // ping was OK so current address is OK
               
                result[0] = local_contact.getExternalAddress();
               
              }else if ( _packet instanceof DHTUDPPacketReplyError ){
               
                DHTUDPPacketReplyError  packet = (DHTUDPPacketReplyError)_packet;
               
                if ( packet.getErrorType() == DHTUDPPacketReplyError.ET_ORIGINATOR_ADDRESS_WRONG ){
                 
                  result[0] = packet.getOriginatingAddress();
                }
              }
            }finally{
             
              sem.release();
            }
          }
         
          public void
          error(
            DHTUDPPacketHandlerException  e )
          {
            try{
              stats.pingFailed();
             
            }finally{
           
              sem.release();
            }
          }
        },
        5000, PRUDPPacketHandler.PRIORITY_HIGH );
     
      sem.reserve( 5000 );
     
      return( result[0] );
     
    }catch( Throwable e ){
     
View Full Code Here

      return( request_handler.statsRequest( contact ));
    }
   
    final DHTTransportFullStats[] res = { null };
   
    final AESemaphore  sem = new AESemaphore( "DHTTransportUDP:getFullStats");
   
    sendStatscontact,
          new DHTTransportReplyHandlerAdapter()
          {
            public void
            statsReply(
              DHTTransportContact   _contact,
              DHTTransportFullStats  _stats )
            {
              res[0= _stats;
             
              sem.release();
            }
           
            public void
            failed(
              DHTTransportContact   _contact,
              Throwable        _error )
            {
              sem.release();
            }
       
          });
   
    sem.reserve();

    return( res[0] );
  }
View Full Code Here

  {
    byte[]  call_key = new byte[20];
   
    random.nextBytes( call_key );
   
    AESemaphore  call_sem = new AESemaphore( "DHTTransportUDP:calSem" );
   
    HashWrapper  wrapped_key = new HashWrapper( call_key );
   
    try{
      this_mon.enter();
     
      call_transfers.put( wrapped_key, call_sem );
   
    }finally{
     
      this_mon.exit();
    }
   
    writeTransfer( listener, target, handler_key, call_key, data, timeout );
   
    if ( call_sem.reserve( timeout )){
     
      try{
        this_mon.enter();
     
        Object  res = call_transfers.remove( wrapped_key );
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.