Package org.gudy.azureus2.plugins.ipc

Examples of org.gudy.azureus2.plugins.ipc.IPCException


      }
    }
   
    if ( pk == null ){
     
      throw( new IPCException( "Public key missing from '" + arg_str + "'" ));
    }
   
    BuddyPluginBuddy  buddy  = getBuddyFromPublicKey( pk );

    if ( buddy == null ){
     
      throw( new IPCException( "Buddy with public key '" + pk + "' not found" ));
    }
   
    if ( hash == null ){
     
      return( handleUPRSS( connection, buddy, category ));
View Full Code Here


 
    throws IPCException
  {
    if ( !buddy.isOnline( true )){
     
      throw( new IPCException( "Buddy isn't online" ));
    }
   
    Map<String,Object>  msg = new HashMap<String, Object>();

    final String if_mod   = connection.getRequestProperty( "If-Modified-Since" );

    try{
      msg.put( "cat", category.getBytes( "UTF-8" ));
                 
      if ( if_mod != null ){
       
        msg.put( "if_mod", if_mod );
      }
     
      // String etag    = connection.getRequestProperty( "If-None-Match" );
         
    }catch( Throwable e ){
     
      Debug.out( e );
    }
   
    final Object[]     result     = { null };
    final AESemaphore  result_sem   = new AESemaphore( "BuddyPlugin:rss" );
       
    final String  etag = buddy.getPublicKey() + "-" + category;
   
    az2_handler.sendAZ2RSSMessage(
      buddy,
      msg,
      new BuddyPluginAZ2TrackerListener()
      {
        public Map
        messageReceived(
          BuddyPluginBuddy  buddy,
          Map          message )
        {
          try{           
            byte[] bytes = (byte[])message.get( "rss" );
         
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
           
            result[0] = bais;
           
            connection.setHeaderField( "ETag", etag );
           
            byte[] b_last_mod = (byte[])message.get( "last_mod" );
           
            if ( b_last_mod != null ){
           
              String  last_mod = new String( b_last_mod, "UTF-8" );
             
              connection.setHeaderField( "Last-Modified", last_mod );
             
              if ( if_mod != null && if_mod.equals( last_mod ) && bytes.length == 0 ){
               
                connection.setResponse( HttpURLConnection.HTTP_NOT_MODIFIED, "Not Modified" );
              }
            }
           
            result_sem.release();
           
          }catch( Throwable e ){
         
            messageFailed( buddy, e );
          }
         
          return( null );
        }
       
        public void
        messageFailed(
          BuddyPluginBuddy  buddy,
          Throwable      cause )
        {         
          result[0] = new IPCException( "Read failed", cause );
         
          result_sem.release();
        }
      });
   
    result_sem.reserve( 60*1000 );
   
    if ( result[0] == null ){
     
      throw( new IPCException( "Timeout" ));
     
    }else if ( result[0] instanceof InputStream ){
     
      return((InputStream)result[0]);
     
View Full Code Here

            public void
            messageFailed(
              BuddyPluginBuddy  buddy,
              Throwable      cause )
            {         
              setResult( new IPCException( "Read failed", cause ));
            }
           
            protected void
            setResult(
              Object    obj )
            {
              synchronized( result ){
               
                if ( result_set ){
                 
                  return;
                }
               
                result_set = true;
               
                if ( !( result[0] instanceof byte[] )){
               
                  result[0] = obj;
                }
               
                result_sem.release();
              }
            }
          });
      }catch( Throwable e ){
       
        result[0] = new IPCException( "Buddy torrent get failed", e );
       
        result_sem.release();
      }
    }else{
     
      result[0] = new IPCException( "Buddy is offline" );

      result_sem.release();
    }
   
      // second try and get via magnet
   
    final MagnetPlugin  magnet_plugin = getMagnetPlugin();
   
    if ( magnet_plugin == null ){
   
      synchronized( result ){
       
        if ( result[0] == null ){
         
          result[0] = new IPCException( "Magnet plugin unavailable" );
        }
      }
       
      result_sem.release();
     
    }else{

      new AEThread2( "BuddyPlugin:mag", true )
      {
        private boolean result_set;
       
        public void
        run()
        {
          try{
           
            if ( buddy.isOnline( true )){
             
              Thread.sleep(10*1000);
            }
           
            synchronized( result ){

              if ( result[0] instanceof byte[] ){
               
                setResult( null );
               
                return;
              }
            }
           
            byte[] torrent_data = magnet_plugin.download(
              new MagnetPluginProgressListener()
              {
                public void
                reportSize(
                  long  size )
                {
                }
               
                public void
                reportActivity(
                  String  str )
                {
                  log( "    MagnetDownload: " + str );
                }
               
                public void
                reportCompleteness(
                  int    percent )
                {
                }
               
                public void
                reportContributor(
                  InetSocketAddress  address )
                {
                }
               
                public boolean
                verbose()
                {
                  return( false );
                }
              },
              hash,
              "",
              new InetSocketAddress[0],
              timeout );
           
            if ( torrent_data == null ){
             
              setResult( new IPCException( "Magnet timeout" ));
                         
            }else{         
             
              log( "    torrent downloaded from magnet" );

              setResult( torrent_data );
            }
          }catch( Throwable e ){
           
            setResult( new IPCException( "Magnet get failed", e ));
          }
        }
       
        protected void
        setResult(
          Object    obj )
        {
          synchronized( result ){
           
            if ( result_set ){
             
              return;
            }
           
            result_set = true;
           
            if ( obj != null ){
             
              if (   result[0] == null ||
                  ( obj instanceof byte[] && !( result[0] instanceof byte[] ))){
               
                result[0] = obj;
              }
            }
             
            result_sem.release();
          }
        }
      }.start();
    }
   
    long  start = SystemTime.getMonotonousTime();
       
    if ( result_sem.reserve(timeout )){
     
      if ( !( result[0] instanceof byte[] )){
   
        long  rem = timeout - ( SystemTime.getMonotonousTime() - start );
       
        if ( rem > 0 ){
       
          result_sem.reserve(rem );
        }
      }
    }
   
    if ( result[0] == null ){
     
      log( "    torrent download timeout" );

      throw( new IPCException( "Timeout" ));
     
    }else if ( result[0] instanceof byte[] ){
           
      return( new ByteArrayInputStream((byte[])result[0]));
     
    }else{
     
      IPCException error = (IPCException)result[0];
     
      log( "    torrent downloaded failed: " + Debug.getNestedExceptionMessage( error ));

      throw( error );
    }
View Full Code Here

         
          e = e.getCause();
        }
      }
     
      throw new IPCException(e);
    }
  }
View Full Code Here

        }
      }
     
      if ( target_use_accessor == null ){
       
        throw( new IPCException( "Plugin has been unloaded" ));
      }
     
      return( target_use_accessor );
    }
  }
View Full Code Here

  public MessageStreamEncoderAdapter( MessageStreamEncoder plug_encoder ) {
    this.plug_encoder = plug_encoder;
  }
 
  public com.aelitis.azureus.core.networkmanager.RawMessage[] encodeMessage( com.aelitis.azureus.core.peermanager.messaging.Message message ) {
    Message plug_msg;
   
    if( message instanceof MessageAdapter ) {  //original message created by plugin, unwrap
      plug_msg = ((MessageAdapter)message).getPluginMessage();
    }
    else {
View Full Code Here

 
    throws MessageException
  {
    if ( incoming ){
     
      throw( new MessageException( "Already connected" ));
    }
   
    if ( connecting ){
     
      throw( new MessageException( "Connect already performed" ));
    }
   
    connecting  = true;
   
    if ( closed ){
     
      throw( new MessageException( "Connection has been closed" ));
    }
   
    InetSocketAddress  tcp_ep = endpoint.getTCP();
       
    if ( tcp_ep != null ){
     
      connectTCP( initial_data, tcp_ep );
     
    }else{
     
      InetSocketAddress  udp_ep = endpoint.getUDP();

      if ( udp_ep != null ){
       
        connectUDP( initial_data, udp_ep, false );
       
      }else{
       
        throw( new MessageException( "No protocols availabld" ));
      }
    }
  }
View Full Code Here

                delegate.close();
               
              }catch( Throwable e ){
              }
             
              reportFailed( new MessageException( "Connection has been closed" ));

            }else{
             
              reportConnected();
            }
View Full Code Here

              final InetSocketAddress  target,
              Map            reply )
            {
              if ( closed ){
                             
                reportFailed( new MessageException( "Connection has been closed" ));

              }else{
               
                connect_method_count++;

                if ( TEST_TUNNEL ){
                 
                  initial_data.rewind();
                 
                  connectTunnel( initial_data, gen_udp, rendezvous, target );
                 
                }else{
               
                  udp_delegate.connect(
                      initial_data,
                      new GenericMessageConnectionAdapter.ConnectionListener()
                      {
                        private boolean  connected;
                       
                        public void
                        connectSuccess()
                        {
                          connected  = true;
                         
                          setDelegate( udp_delegate );
                         
                          if ( closed ){
                           
                            try{
                              delegate.close();
                             
                            }catch( Throwable e ){                         
                            }
                           
                            reportFailed( new MessageException( "Connection has been closed" ));
                           
                          }else{
                           
                            reportConnected();
                          }                       
                        }
                       
                        public void
                        connectFailure(
                          Throwable failure_msg )
                        {
                          if ( connected ){
                           
                            reportFailed( failure_msg );
                           
                          }else{
                           
                            initial_data.rewind();
 
                            connectTunnel( initial_data, gen_udp, rendezvous, target );
                          }
                        }
                      });
                }
              }
            }
           
            public void
            failed(
              int      failure_type )
            {
              reportFailed( new MessageException( "UDP connection attempt failed - NAT traversal failed (" + NATTraversalObserver.FT_STRINGS[ failure_type ] + ")"));
            }
           
            public void
            failed(
              Throwable   cause )
            {
              reportFailed( cause );
            }
           
            public void
            disabled()
            {
              reportFailed( new MessageException( "UDP connection attempt failed as DDB is disabled" ));
            }
          });
    }else{
 
      udp_delegate.connect(
          initial_data,
          new GenericMessageConnectionAdapter.ConnectionListener()
          {
            private boolean  connected;
           
            public void
            connectSuccess()
            {
              connected  = true;
             
              setDelegate( udp_delegate );
             
              if ( closed ){
               
                try{
                  delegate.close();
                 
                }catch( Throwable e ){ 
                }
               
                reportFailed( new MessageException( "Connection has been closed" ));

              }else{
               
                reportConnected();
              }
View Full Code Here

               
              }catch( Throwable e ){
               
              }
             
              reportFailed( new MessageException( "Connection has been closed" ));

            }else{
             
              reportConnected();
            }
View Full Code Here

TOP

Related Classes of org.gudy.azureus2.plugins.ipc.IPCException

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.