Examples of DHTTransportReplyHandlerAdapter


Examples of com.aelitis.azureus.core.dht.transport.DHTTransportReplyHandlerAdapter

          // to get the random id
       
        final AESemaphore  sem = new AESemaphore( "DHTDB:cacheForward" );
       
        contact.sendFindNode(
            new DHTTransportReplyHandlerAdapter()
            {
              public void
              findNodeReply(
                DHTTransportContact   _contact,
                DHTTransportContact[]  _contacts )
              { 
                anti_spoof_done.add( _contact );
             
                try{
                  // System.out.println( "cacheForward: pre-store findNode OK" );
               
                  List<HashWrapper>        keys  = (List<HashWrapper>)data[1];
                   
                  byte[][]        store_keys     = new byte[keys.size()][];
                  DHTTransportValue[][]  store_values   = new DHTTransportValue[store_keys.length][];
                 
                  keys_published[0] += store_keys.length;
                 
                  for (int i=0;i<store_keys.length;i++){
                   
                    HashWrapper  wrapper = keys.get(i);
                   
                    store_keys[i] = wrapper.getHash();
                   
                    List<DHTDBValueImpl>    values  = republish.get( wrapper );
                   
                    store_values[i] = new DHTTransportValue[values.size()];
             
                    values_published[0] += store_values[i].length;
                   
                    for (int j=0;j<values.size();j++){
                   
                      DHTDBValueImpl  value  = values.get(j);
                       
                        // we reduce the cache distance by 1 here as it is incremented by the
                        // recipients
                     
                      store_values[i][j] = value.getValueForRelay(local_contact);
                    }
                  }
                   
                  List<DHTTransportContact>  contacts = new ArrayList<DHTTransportContact>();
                 
                  contacts.add( contact );
                 
                  republish_ops[0]++;
                 
                  control.putDirectEncodedKeys(
                      store_keys,
                      "Republish cache",
                      store_values,
                      contacts );
                }finally{
                 
                  sem.release();
                }
              }
             
              public void
              failed(
                DHTTransportContact   _contact,
                Throwable        _error )
              {
                try{
                  // System.out.println( "cacheForward: pre-store findNode Failed" );
 
                  DHTLog.log( "cacheForward: pre-store findNode failed " + DHTLog.getString( _contact ) + " -> failed: " + _error.getMessage());
                                     
                  router.contactDead( _contact.getID(), false);
                 
                }finally{
                 
                  sem.release();
                }
              }
            },
            contact.getProtocolVersion() >= DHTTransportUDP.PROTOCOL_VERSION_ANTI_SPOOF2?new byte[0]:new byte[20] );
       
        sem.reserve();
      }
     
      try{
        this_mon.enter();
       
        for (int i=0;i<stop_caching.size();i++){
         
          DHTDBMapping  mapping = (DHTDBMapping)stored_values.remove( stop_caching.get(i));
         
          if ( mapping != null ){
           
            removeFromPrefixMap( mapping );
           
            mapping.destroy();
          }
        }
      }finally{
       
        this_mon.exit();
      }
    }
   
    DHTStorageBlock[]  direct_key_blocks = getDirectKeyBlocks();

    if ( direct_key_blocks.length > 0 ){
         
      for (int i=0;i<direct_key_blocks.length;i++){
     
        final DHTStorageBlock  key_block = direct_key_blocks[i];
       
        List  contacts = control.getClosestKContactsList( key_block.getKey(), false );

        boolean  forward_it = false;
       
          // ensure that the key is close enough to us
       
        for (int j=0;j<contacts.size();j++){

          final DHTTransportContact  contact = (DHTTransportContact)contacts.get(j);

          if ( router.isID( contact.getID())){
           
            forward_it  = true;
           
            break;
          }
        }
         
        for (int j=0; forward_it && j<contacts.size();j++){
         
          final DHTTransportContact  contact = (DHTTransportContact)contacts.get(j);
         
          if ( key_block.hasBeenSentTo( contact )){
           
            continue;
          }
         
          if ( router.isID( contact.getID())){
           
            continue// ignore ourselves
          }

          if ( contact.getProtocolVersion() >= DHTTransportUDP.PROTOCOL_VERSION_BLOCK_KEYS ){
           
            final Runnable task =
              new Runnable()
              {
                public void
                run()
                {
                  contact.sendKeyBlock(
                    new DHTTransportReplyHandlerAdapter()
                    {
                      public void
                      keyBlockReply(
                        DHTTransportContact   _contact )
                      {
                        DHTLog.log( "key block forward ok " + DHTLog.getString( _contact ));
                       
                        key_block.sentTo( _contact );
                      }
                     
                      public void
                      failed(
                        DHTTransportContact   _contact,
                        Throwable        _error )
                      {
                        DHTLog.log( "key block forward failed " + DHTLog.getString( _contact ) + " -> failed: " + _error.getMessage());
                      }
                    },
                    key_block.getRequest(),
                    key_block.getCertificate());
                }
              };
           
              if ( anti_spoof_done.contains( contact )){
               
                task.run();
               
              }else{
               
                contact.sendFindNode(
                    new DHTTransportReplyHandlerAdapter()
                    {
                      public void
                      findNodeReply(
                        DHTTransportContact   contact,
                        DHTTransportContact[]  contacts )
View Full Code Here

Examples of com.aelitis.azureus.core.dht.transport.DHTTransportReplyHandlerAdapter

           
            Debug.out( "inconsistent - we shouldn't query ourselves!" );
          }
         
          contact.sendQueryStore(
            new DHTTransportReplyHandlerAdapter()
            {
              public void
              queryStoreReply(
                DHTTransportContact contact,
                List<byte[]>    response )
View Full Code Here

Examples of com.aelitis.azureus.core.dht.transport.DHTTransportReplyHandlerAdapter

        };
       
      if ( d_contact.getRandomID() == 0 ){
       
        d_contact.sendFindNode(
            new DHTTransportReplyHandlerAdapter()
            {
              public void
              findNodeReply(
                DHTTransportContact   _contact,
                DHTTransportContact[]  _contacts )
View Full Code Here

Examples of com.aelitis.azureus.core.dht.transport.DHTTransportReplyHandlerAdapter

     
      outstanding++;

      try{
        contact.sendImmediatePing(
          new DHTTransportReplyHandlerAdapter()
          {
            public void
            pingReply(
              DHTTransportContact contact )
            {
View Full Code Here

Examples of com.aelitis.azureus.core.dht.transport.DHTTransportReplyHandlerAdapter

  isAlive(
    long                timeout,
    final DHTPluginOperationListener  listener )
  {
    contact.isAlive(
      new DHTTransportReplyHandlerAdapter()
      {
        public void
        pingReply(
          DHTTransportContact contact )
        {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.