Examples of KadPacket


Examples of org.jmule.core.jkad.packet.KadPacket

      public void processToleranceContacts(ContactAddress sender,
          List<KadContact> results) {
       
        for(KadContact contact : results) {
          KadPacket packet = PacketFactory.getPublishReqPacket(targetID, _jkad_manager.getClientID(), tagList);
          _network_manager.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
        }
      }
     
      public void stopLookupEvent() {
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

         
          long contact_time = System.currentTimeMillis() - contact.getLastResponse();
          if (contact_time >= ROUTING_TABLE_CONTACT_TIMEOUT) {
            int rcount = maintenance_contact.requestCount;
            if (rcount<=contact.getContactType().toByte()+1) {
              KadPacket hello_packet;
              try {
                hello_packet = PacketFactory.getHello2ReqPacket(TagList.EMPTY_TAG_LIST);
                _network_manager.sendKadPacket(hello_packet, maintenance_contact.kadContact.getIPAddress(), maintenance_contact.kadContact.getUDPPort());
              } catch (JMException e) {
                e.printStackTrace();
              }

              maintenance_contact.requestCount++;
              continue;
            }
           
            int beta = maintenance_contact.requestCount - maintenance_contact.responseCount;
            boolean downgrate = false;
            if (beta>contact.getContactType().toByte()+1)
              downgrate = true;
           
            if (downgrate) {
              if (contact.getContactType() == ContactType.ScheduledForRemoval) {
                maintenanceContacts.remove(contact.getContactAddress());
                removeNode(contact);
                continue;
              }
              contact.downgrateType();
              notifyContactUpdated(contact);
              if (contact.getContactType()!=ContactType.ScheduledForRemoval)
                maintenanceContacts.remove(contact.getContactAddress());
              continue;
            }
            maintenanceContacts.remove(contact.getContactAddress());
            continue;
          }
         
        }
        if (maintenanceContacts.size()>=ROUTING_TABLE_MAX_MAINTENANCE_CONTACTS) return ;
        List<KadContact> candidatList = getContactsWithTimeout(ROUTING_TABLE_CONTACT_IGNORE_TIME);
        if (candidatList.size() == 0) return ;
        for(int i = 0;i<ROUTING_TABLE_MAINTENANCE_CONTACTS; i++) {
          KadContact addContact = null;
          do {
            int id = Utils.getRandom(candidatList.size());
            addContact = candidatList.get(id);
           
          }while(maintenanceContacts.containsKey(addContact.getContactAddress()));
          MaintenanceContact c = new MaintenanceContact(addContact);
          maintenanceContacts.put(addContact.getContactAddress(), c);
         
          KadPacket hello_packet;
          try {
            hello_packet = PacketFactory.getHello2ReqPacket(TagList.EMPTY_TAG_LIST);
            _network_manager.sendKadPacket(hello_packet, addContact.getIPAddress(), addContact.getUDPPort());
          } catch (JMException e) {
            e.printStackTrace();
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

      public void processToleranceContacts(ContactAddress sender,
          List<KadContact> results) {
        for(KadContact contact : results) {
          used_contacts.add(contact);
          KadPacket hello;
          try {
            hello = PacketFactory.getHello2ReqPacket(TagList.EMPTY_TAG_LIST);
            _network_manager.sendKadPacket(hello, contact.getIPAddress(), contact.getUDPPort());
          } catch (JMException e) {
            e.printStackTrace();
          }
         
         
          PacketListener listener = new PacketListener(KADEMLIA2_HELLO_RES, contact.getContactAddress().getAsInetSocketAddress()) {
            public void packetReceived(KadPacket packet) {
              KadPacket responsePacket = PacketFactory.getSearchReqPacket(searchID,true);
              _network_manager.sendKadPacket(responsePacket, new IPAddress(packet.getAddress()), packet.getAddress().getPort());
            }
          };
          _jkad_manager.addPacketListener(listener);
        }
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

      public void processToleranceContacts(ContactAddress sender,
          List<KadContact> results) {
       
        for(KadContact contact : results) {
          KadPacket packet;
          try {
            packet = PacketFactory.getHello1ReqPacket();
            _network_manager.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
          } catch (JMException e) {
            e.printStackTrace();
          }
         
         
          PacketListener listener = new PacketListener(KADEMLIA_HELLO_RES, contact.getContactAddress().getAsInetSocketAddress()) {
            public void packetReceived(KadPacket packet) {
              KadPacket responsePacket = PacketFactory.getNotesReq(searchID);
              _network_manager.sendKadPacket(responsePacket, new IPAddress(packet.getAddress()), packet.getAddress().getPort());
              _jkad_manager.removePacketListener(this);
            }
          };
          _jkad_manager.addPacketListener(listener);
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

      public void processToleranceContacts(ContactAddress sender,
          List<KadContact> results) {
       
        for(KadContact contact : results) {
          used_contacts.add(contact);
          KadPacket hello;
          try {
            hello = PacketFactory.getHello2ReqPacket(TagList.EMPTY_TAG_LIST);
            _network_manager.sendKadPacket(hello, contact.getIPAddress(), contact.getUDPPort());
          } catch (JMException e) {           
            e.printStackTrace();
          }
         
         
          PacketListener listener = new PacketListener(KADEMLIA2_HELLO_RES, contact.getContactAddress().getAsInetSocketAddress()) {
            public void packetReceived(KadPacket packet) {
              KadPacket responsePacket = PacketFactory.getSearchReqPacket(searchID,false);
              _network_manager.sendKadPacket(responsePacket, new IPAddress(packet.getAddress()), packet.getAddress().getPort());
              _jkad_manager.removePacketListener(this);
            }
          };
          _jkad_manager.addPacketListener(listener);
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

    for(KadContact contact : contactList) {
      bootStrapContacts.add(contact);
      usedContacts.add(contact);
      InternalNetworkManager x = (InternalNetworkManager) NetworkManagerSingleton.getInstance();
      if (routingTable.getTotalContacts()<MIN_CONTACTS_TO_SEND_BOOTSTRAP) {       
        KadPacket packet;
        try {
          packet = PacketFactory.getBootStrap1ReqPacket();
          x.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
        } catch (JMException e) {
          e.printStackTrace();
        }
       
      } else {
        KadPacket packet;
        try {
          packet = PacketFactory.getHello2ReqPacket(org.jmule.core.edonkey.packet.tag.TagList.EMPTY_TAG_LIST);
          x.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
        } catch (JMException e) {
          e.printStackTrace();
        }
       
      }
    }
   
    bootStrapTask = new Task() {
      public void run() {
        if (bootStrapResponses >= BOOTSTRAP_STOP_CONTACTS) {
          completeBootStrap();
          return ;
        }
        for(KadContact contact : bootStrapContacts) {
          long time = System.currentTimeMillis() - contact.getLastResponse();
          if (time >= BOOTSTRAP_REMOVE_TIME) {
            bootStrapContacts.remove(contact);
            continue;
          }
         
        }
       
        int contactCount = BOOTSTRAP_CONTACTS - bootStrapContacts.size();
        if (contactCount<=0) return ;
       
        List<KadContact> contactList = routingTable.getRandomContacts(contactCount,usedContacts);
       
        for(KadContact contact : contactList) {
          bootStrapContacts.add(contact);
          usedContacts.add(contact);
          try {
            if (routingTable.getTotalContacts()<MIN_CONTACTS_TO_SEND_BOOTSTRAP) {         
              KadPacket packet = PacketFactory.getBootStrap1ReqPacket();
              _network_manager.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
            } else {
              KadPacket packet = PacketFactory.getHello2ReqPacket(TagList.EMPTY_TAG_LIST);
              _network_manager.sendKadPacket(packet, contact.getIPAddress(), contact.getUDPPort());
            }
          }catch(JMException e) {
            e.printStackTrace();
          }
        }
      }
    };
    Timer.getSingleton().addTask(BOOTSTRAP_CHECK_INTERVAL, bootStrapTask, true);
 
    bootStrapResponseListener = new PacketListener(JKadConstants.KADEMLIA2_HELLO_RES) {
      public void packetReceived(KadPacket packet) {
        IPAddress address= new IPAddress(packet.getAddress());
        for(KadContact c : usedContacts) {
          if (c.getContactAddress().getAddress().equals(address)) {
            bootStrapResponses++;
            break;
          }
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

   * @param address
   * @param port
   */
  public void start(IPAddress address, int port) {
    try {
      KadPacket packet = PacketFactory.getBootStrap1ReqPacket();
      _network_manager.sendKadPacket(packet, address, port);
    }catch(JMException e) {
      e.printStackTrace();
    }
   
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

    return isStarted;
  }
 
  public void processBootStrapReq(ClientID clientID, IPAddress ipAddress, int udpPort) {
    List<KadContact> contactList = routingTable.getNearestContacts(clientID, BOOTSTRAP_CONTACTS);
    KadPacket packet = PacketFactory.getBootStrap1ResPacket(contactList);
    _network_manager.sendKadPacket(packet, ipAddress, udpPort);
  }
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

    InternalNetworkManager _network_manager = (InternalNetworkManager) NetworkManagerSingleton
        .getInstance();

    if ((type == PacketType.KAD) || (type == PacketType.KAD_COMPRESSED)) {
      _network_manager.receiveKadPacket(new KadPacket(packet_content,
          packetSender));
      return;
    }

    byte packet_protocol = packet_content.get(0);
View Full Code Here

Examples of org.jmule.core.jkad.packet.KadPacket

          contact.setTCPPort(tcp_port);
          contact.setUDPPort(udp_port);

        }

        KadPacket response;
        response = PacketFactory.getHello1ResPacket();
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA_HELLO_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        byte address[] = new byte[4];
        rawData.get(address);
        int udp_port = shortToInt(rawData.getShort());
        int tcp_port = shortToInt(rawData.getShort());

        KadContact contact = routing_table.getContact(new ClientID(
            client_id_raw));

        if (contact != null) {
          contact.setTCPPort(tcp_port);
          contact.setUDPPort(udp_port);
        }
        // if contact is not in routing table ignore message
        /*
         * KadContact add_contact = new KadContact(new
         * ClientID(client_id_raw), new ContactAddress(new
         * IPAddress(address),udp_port), tcp_port, (byte)0, null);
         * routing_table.addContact(add_contact);
         *
         * add_contact.setConnected(true);
         */

      } else if (packetOPCode == KADEMLIA_REQ) {
        byte type = rawData.get();

        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID targetClientID = new ClientID(client_id_raw);

        client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID receiverClientID = new ClientID(client_id_raw);
        RequestType requestType = RequestType.FIND_VALUE;
        switch (type) {
        case JKadConstants.FIND_VALUE:
          requestType = RequestType.FIND_VALUE;
          break;

        case JKadConstants.STORE:
          requestType = RequestType.STORE;
          break;

        case JKadConstants.FIND_NODE:
          requestType = RequestType.FIND_NODE;
          break;
        }
        lookup.processRequest(packet.getAddress(), requestType,
            targetClientID, receiverClientID, 1);
      } else if (packetOPCode == KADEMLIA_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        int contactCount = byteToInt(rawData.get());
        List<KadContact> contact_list = new LinkedList<KadContact>();
        for (int i = 0; i < contactCount; i++) {
          contact_list.add(getContact(rawData));
        }

        lookup.processResponse(packet.getAddress(), new ClientID(
            client_id_raw), contact_list);
      } else if (packetOPCode == KADEMLIA_PUBLISH_REQ) {
        byte target_id[] = new byte[16];
        rawData.get(target_id);
        Int128 targetID = new Int128(target_id);
        int clientCount = shortToInt(rawData.getShort());

        List<Source> list = new LinkedList<Source>();

        for (int i = 0; i < clientCount; i++) {
          byte clientID[] = new byte[16];
          rawData.get(clientID);
          int tagCount = shortToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            Tag tag = TagScanner.scanTag(rawData);
            tagList.addTag(tag);
          }
          ClientID client_id = new ClientID(clientID);
          Source source = new Source(client_id, tagList);

          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());

          KadContact contact = routing_table.getContact(client_id);
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());

          list.add(source);
        }

        boolean source_load = false;

        for (Source source : list) {
          boolean isSourcePublish = false;
          isSourcePublish = source.getTagList()
              .hasTag(TAG_SOURCETYPE);
          if (isSourcePublish) {
            indexer.addFileSource(targetID, source);
            source_load = true;
          } else
            indexer.addFileSource(targetID, source);
        }
        KadPacket response = null;
        if (source_load)
          response = PacketFactory.getPublishResPacket(targetID,
              indexer.getFileSourcesLoad());
        else
          response = PacketFactory.getPublishResPacket(targetID,
              indexer.getKeywordLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA_PUBLISH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int load = byteToInt(rawData.get());
        publisher.processGenericResponse(new ClientID(targetID), load);
      } else if (packetOPCode == KADEMLIA_SEARCH_NOTES_REQ) {
        byte[] targetID = new byte[16];
        rawData.get(targetID);
        List<Source> source_list = indexer.getNoteSources(new Int128(
            targetID));
        KadPacket response = PacketFactory.getNotesRes(new Int128(
            targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_SEARCH_NOTES_RES) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        int resultCount = shortToInt(rawData.getShort());
        List<Source> sourceList = new LinkedList<Source>();

        for (int i = 0; i < resultCount; i++) {
          byte[] clientID = new byte[16];
          rawData.get(clientID);
          Convert.updateSearchID(clientID);
          int tagCount = shortToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            Tag tag = TagScanner.scanTag(rawData);
            tagList.addTag(tag);
          }
          Source source = new Source(new ClientID(clientID), tagList);
          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());
          KadContact contact = RoutingTable.getSingleton()
              .getContact(new ClientID(clientID));
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());
          sourceList.add(source);
        }
        search.processResults(packet.getAddress(), new Int128(noteID),
            sourceList);
      } else if (packetOPCode == KADEMLIA_PUBLISH_NOTES_REQ) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        byte[] publisherID = new byte[16];
        rawData.get(publisherID);
        int tagCount = byteToInt(rawData.get());
        TagList tagList = new TagList();
        for (int i = 0; i < tagCount; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          tagList.addTag(tag);
        }
        ClientID publisher_id = new ClientID(publisherID);
        Source source = new Source(publisher_id, tagList);
        source.setAddress(new IPAddress(packet.getAddress()));
        source.setUDPPort(packet.getAddress().getPort());

        KadContact contact = routing_table.getContact(publisher_id);
        if (contact != null)
          source.setTCPPort(contact.getTCPPort());

        indexer.addNoteSource(new Int128(noteID), source);
        KadPacket response = PacketFactory.getPublishNotesRes(
            new Int128(noteID), indexer.getNoteLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA_PUBLISH_NOTES_RES) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        int load = byteToInt(rawData.get());
        publisher.processNoteResponse(new Int128(noteID), load);
      } else if (packetOPCode == KADEMLIA_SEARCH_REQ) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        boolean sourceSearch = false;
        if (rawData.limit() == 17)
          if (rawData.get() == 1)
            sourceSearch = true;
        List<Source> source_list;

        if (sourceSearch)
          source_list = indexer.getFileSources(new Int128(targetID));
        else
          source_list = indexer
              .getKeywordSources(new Int128(targetID));
        KadPacket response = PacketFactory.getSearchResPacket(
            new Int128(targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_SEARCH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int resultCount = shortToInt(rawData.getShort());

        List<Source> sourceList = new LinkedList<Source>();

        for (int i = 0; i < resultCount; i++) {
          byte[] contactID = new byte[16];
          rawData.get(contactID);
          int tagCount = byteToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            try {
              Tag tag = TagScanner.scanTag(rawData);
              if (tag == null)
                continue;

              tagList.addTag(tag);
            } catch (Throwable t) {
              t.printStackTrace();
            }
          }
          ClientID client_id = new ClientID(contactID);
          Source source = new Source(client_id, tagList);
          KadContact contact = routing_table.getContact(client_id);
          if (contact != null) {
            source.setUDPPort(contact.getUDPPort());
            source.setTCPPort(contact.getTCPPort());
          }
          sourceList.add(source);
        }
        search.processResults(packet.getAddress(),
            new Int128(targetID), sourceList);
      } else if (packetOPCode == KADEMLIA_FIREWALLED_REQ) {
        int tcpPort = shortToInt(rawData.getShort());
        firewallChecker.processFirewallRequest(packet.getAddress(),
            tcpPort);
      } else if (packetOPCode == KADEMLIA_FIREWALLED_RES) {
        byte[] address = new byte[4];
        rawData.get(address);
        firewallChecker.porcessFirewallResponse(packet.getAddress(),
            new IPAddress(address));
      } else if (packetOPCode == KADEMLIA2_HELLO_REQ) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID clientID = new ClientID(client_id_raw);
        int tcpPort = shortToInt(rawData.getShort());
        byte version = rawData.get();
        byte tag_count = rawData.get();
        List<Tag> tag_list = new LinkedList<Tag>();
        for (byte i = 0; i < tag_count; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.add(tag);
        }

        KadContact contact = routing_table.getContact(clientID);
        if (contact != null) {
          contact.setTCPPort(tcpPort);
          contact.setUDPPort(packet.getAddress().getPort());
          contact.setVersion(version);
        }

        KadPacket response = PacketFactory
            .getHello2ResPacket(TagList.EMPTY_TAG_LIST);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA2_HELLO_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID clientID = new ClientID(client_id_raw);
        int tcpPort = shortToInt(rawData.getShort());
        byte version = rawData.get();
        byte tag_count = rawData.get();
        List<Tag> tag_list = new LinkedList<Tag>();

        for (byte i = 0; i < tag_count; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.add(tag);
        }

        KadContact contact = routing_table.getContact(clientID);
        if (contact != null) {
          contact.setTCPPort(tcpPort);
          contact.setVersion(version);
        }
        // ignore message if contact is not in routing table
        /*
         * ContactAddress address = new ContactAddress(new
         * IPAddress(packet.getSender()),packet.getSender().getPort());
         * KadContact add_contact = new KadContact(clientID, address,
         * tcpPort,version, null);
         * routing_table.addContact(add_contact);
         *
         * add_contact.setConnected(true);
         */

      } else if (packetOPCode == KADEMLIA2_REQ) {
        byte type = rawData.get();

        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID targetClientID = new ClientID(client_id_raw);

        client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID receiverClientID = new ClientID(client_id_raw);
        RequestType requestType = RequestType.FIND_VALUE;
        switch (type) {
        case JKadConstants.FIND_VALUE:
          requestType = RequestType.FIND_VALUE;
          break;

        case JKadConstants.STORE:
          requestType = RequestType.STORE;
          break;

        case JKadConstants.FIND_NODE:
          requestType = RequestType.FIND_NODE;
          break;
        }

        lookup.processRequest(packet.getAddress(), requestType,
            targetClientID, receiverClientID, 2);
      } else if (packetOPCode == KADEMLIA2_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        int contactCount = byteToInt(rawData.get());
        List<KadContact> contact_list = new LinkedList<KadContact>();
        for (int i = 0; i < contactCount; i++) {
          contact_list.add(getContact(rawData));
        }
        lookup.processResponse(packet.getAddress(), new ClientID(
            client_id_raw), contact_list);
      } else if (packetOPCode == KADEMLIA2_PUBLISH_KEY_REQ) {
        byte[] client_id = new byte[16];
        rawData.get(client_id);
        ClientID clientID = new ClientID(client_id);
        int count = rawData.getShort();
        for (int i = 0; i < count; i++) {
          byte[] hash = new byte[16];
          rawData.get(hash);
          byte tagCount = rawData.get();
          TagList tag_list = new TagList();
          for (int j = 0; j < tagCount; j++) {
            Tag tag = TagScanner.scanTag(rawData);
            if (tag == null)
              throw new CorruptedPacketException();
            tag_list.addTag(tag);
          }
          Source source = new Source(clientID, tag_list);
          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());

          KadContact contact = routing_table.getContact(clientID);
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());

          indexer.addKeywordSource(new Int128(hash), source);
        }
        KadPacket response = PacketFactory.getPublishRes2Packet(
            clientID, indexer.getKeywordLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA2_PUBLISH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int load = byteToInt(rawData.get());
        publisher.processGenericResponse(new ClientID(targetID), load);
      } else if (packetOPCode == KADEMLIA2_PUBLISH_SOURCE_REQ) {
        byte[] client_id = new byte[16];
        byte[] source_id = new byte[16];

        rawData.get(client_id);
        rawData.get(source_id);

        int tagCount = rawData.get();
        TagList tag_list = new TagList();
        for (int i = 0; i < tagCount; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.addTag(tag);
        }
        Source source = new Source(new ClientID(client_id), tag_list);
        source.setAddress(new IPAddress(packet.getAddress()));
        source.setUDPPort(packet.getAddress().getPort());

        KadContact contact = routing_table.getContact(new ClientID(
            client_id));
        if (contact != null)
          source.setTCPPort(contact.getTCPPort());

        indexer.addFileSource(new Int128(source_id), source);

        KadPacket response = PacketFactory.getPublishRes2Packet(
            new ClientID(client_id), indexer.getFileSourcesLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_FINDBUDDY_REQ) {
        byte[] receiver_id = new byte[16];
        byte[] sender_id = new byte[16];
        short tcp_port;

        rawData.get(receiver_id);
        rawData.get(sender_id);
        tcp_port = rawData.getShort();

        Buddy buddy = Buddy.getInstance();
        Logger.getSingleton().logMessage(
            "Buddy request : " + packet.getAddress());
        if (!buddy.isJKadUsedAsBuddy()) {
          ClientID receiverID = new ClientID(receiver_id);
          Int128 senderID = new Int128(sender_id);

          if (getClientID().equals(receiverID)) {
            buddy.setClientID(senderID);
            buddy.setAddress(new IPAddress(packet.getAddress()));
            buddy.setTCPPort(tcp_port);
            buddy.setUDPPort(org.jmule.core.utils.Convert
                .intToShort(packet.getAddress().getPort()));

            buddy.setKadIsUsedAsBuddy(true);

            Logger.getSingleton().logMessage(
                "New buddy : " + buddy.getAddress() + " TCP : "
                    + buddy.getTCPPort() + " UDP : "
                    + buddy.getUDPPort());

            ConfigurationManager configManager = ConfigurationManagerSingleton
                .getInstance();
            KadPacket response;
            try {
              response = PacketFactory.getBuddyResPacket(
                  new ClientID(sender_id), getClientID(),
                  (short) configManager.getTCP());
              _network_manager.sendKadPacket(response,
                  sender_address, sender_port);
            } catch (ConfigurationManagerException e) {
              e.printStackTrace();
            }

          }

        }

      } else if (packetOPCode == KADEMLIA2_SEARCH_KEY_REQ) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        List<Source> source_list;

        source_list = indexer.getKeywordSources(new Int128(targetID));
        KadPacket response = PacketFactory.getSearchRes2Packet(
            new Int128(targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA2_SEARCH_SOURCE_REQ) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        short start_pos;
        start_pos = rawData.getShort();
        long fileSize = rawData.getLong();
        List<Source> source_list;

        source_list = indexer.getFileSources(new Int128(targetID),
            start_pos, fileSize);
        KadPacket response = PacketFactory.getSearchRes2Packet(
            new Int128(targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA2_SEARCH_NOTES_REQ) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        long fileSize = rawData.getLong();
        List<Source> source_list;

        source_list = indexer.getNoteSources(new Int128(targetID),
            fileSize);
        KadPacket response = PacketFactory.getSearchRes2Packet(
            new Int128(targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_CALLBACK_REQ) {
        Buddy buddy = Buddy.getInstance();
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.