Package net.tomp2p.peers

Examples of net.tomp2p.peers.PeerAddress


        final boolean randomSearch = routingBuilder.locationKey() == null;
        int active = 0;
        for (int i = 0; i < routingMechanism.parallel(); i++) {
            if (routingMechanism.futureResponse(i) == null && !routingMechanism.isStopCreatingNewFutures()) {
                final PeerAddress next;
                if (randomSearch) {
                    next = routingMechanism.pollRandomInQueueToAsk(rnd);
                } else {
                    next = routingMechanism.pollFirstInQueueToAsk();
                }
                if (next != null) {
                    routingMechanism.addToAlreadyAsked(next);
                    active++;
                    // if we search for a random peer, then the peer should
                    // return the address farest away.
                    final Number160 locationKey2 = randomSearch ? next.peerId().xor(Number160.MAX_VALUE)
                            : routingBuilder.locationKey();
                    routingBuilder.locationKey(locationKey2);
                    
                    if(LOG.isWarnEnabled() ) {
                      //routing is per default UDP, don't show warning if the other TCP/UDP is used
                      if(channelCreator.availableUDPPermits()==0 && !routingBuilder.isForceTCP()) {
                        LOG.warn("sanity check faild UDP: {}, {}",i,Thread.currentThread().getName());
                      } else if(channelCreator.availableTCPPermits()==0 && routingBuilder.isForceTCP()) {
                        LOG.warn("sanity check faild TCP: {}, {}",i,Thread.currentThread().getName());
                      }
                    }
                    routingMechanism.futureResponse(i, neighbors.closeNeighbors(next,
                            routingBuilder.searchValues(), type, channelCreator, routingBuilder));
                    LOG.debug("get close neighbors: {} on {}", next, i);
                }
            } else if (routingMechanism.futureResponse(i) != null) {
                LOG.debug("activity on {}", i);
                active++;
            }
        }
        if (active == 0) {
            LOG.debug("no activity, closing");

            routingMechanism.neighbors(routingBuilder);
            routingMechanism.cancel();
            return;
        }
        final boolean last = active == 1;
        final FutureForkJoin<FutureResponse> fp = new FutureForkJoin<FutureResponse>(1, false,
                routingMechanism.futureResponses());
        fp.addListener(new BaseFutureAdapter<FutureForkJoin<FutureResponse>>() {
            @Override
            public void operationComplete(final FutureForkJoin<FutureResponse> future) throws Exception {
                final boolean finished;
                if (future.isSuccess()) {
                    Message lastResponse = future.last().responseMessage();
                    PeerAddress remotePeer = lastResponse.sender();
                    routingMechanism.addPotentialHits(remotePeer);
                    Collection<PeerAddress> newNeighbors = lastResponse.neighborsSet(0).neighbors();

                    Integer resultSize = lastResponse.intAt(0);
                    Number160 keyDigest = lastResponse.key(0);
View Full Code Here


        message.command((byte) command);
        final Number160 senderID = readID(buffer);
        final int tcpPort = buffer.readUnsignedShort();
        final int udpPort = buffer.readUnsignedShort();
        final Number160 recipientID = readID(buffer);
        message.recipient(new PeerAddress(recipientID, recipientSocket));
        final int contentTypes = buffer.readInt();
        message.hasContent(contentTypes != 0);
        message.contentTypes(decodeContentTypes(contentTypes, message));
        // set the address as we see it, important for port forwarding
        // identification
        final int options = buffer.readUnsignedByte();
        // three bits for the message options, 5 bits for the sender options
    message.options(options & 0x7);
        final int senderOptions = options >>> 3;
        final PeerAddress peerAddress = new PeerAddress(senderID,
            senderSocket.getAddress(), tcpPort, udpPort, senderOptions);
        message.sender(peerAddress);
        message.senderSocket(senderSocket);
        message.recipientSocket(recipientSocket);
        return message;
View Full Code Here

            // master peer learns about the slave peers
            master.peerBean().peerMap().peerFound(slave1.peerAddress(), null, null);
            master.peerBean().peerMap().peerFound(slave2.peerAddress(), null, null);

            System.err.println("both peers online");
            PeerAddress slaveAddress1 = slave1.peerAddress();
            slave1.shutdown().await();
            master.peerBean().peerMap().peerFailed(slaveAddress1, new PeerException(AbortCause.SHUTDOWN, "shutdown"));

            Assert.assertEquals(1, test1.get());
            Assert.assertEquals(2, test2.get());

            PeerAddress slaveAddress2 = slave2.peerAddress();
            slave2.shutdown().await();
            master.peerBean().peerMap().peerFailed(slaveAddress2, new PeerException(AbortCause.SHUTDOWN, "shutdown"));

            Assert.assertEquals(1, test1.get());
            Assert.assertEquals(3, test2.get());
View Full Code Here

        new PeerBuilderNAT(peer).bufferConfiguration(androidConfig).start();
      }

      // Test setting up relay peers
      unreachablePeer = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(5000).start();
      PeerAddress upa = unreachablePeer.peerBean().serverPeerAddress();
      upa = upa.changeFirewalledTCP(true).changeFirewalledUDP(true);
      unreachablePeer.peerBean().serverPeerAddress(upa);

      // find neighbors
      FutureBootstrap futureBootstrap = unreachablePeer.bootstrap().peerAddress(peers[0].peerAddress()).start();
      futureBootstrap.awaitUninterruptibly();
View Full Code Here

        new PeerBuilderNAT(peer).bufferConfiguration(androidConfig).start();
      }

      // Test setting up relay peers
      unreachablePeer = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(13337).start();
      PeerAddress upa = unreachablePeer.peerBean().serverPeerAddress();
      upa = upa.changeFirewalledTCP(true).changeFirewalledUDP(true);
      unreachablePeer.peerBean().serverPeerAddress(upa);

      // find neighbors
      FutureBootstrap futureBootstrap = unreachablePeer.bootstrap().peerAddress(peers[0].peerAddress()).start();
      futureBootstrap.awaitUninterruptibly();
      Assert.assertTrue(futureBootstrap.isSuccess());

      // setup relay and lower the update interval to 5s
      PeerNAT uNat = new PeerBuilderNAT(unreachablePeer).relayType(relayType).gcmServerCredentials(gcmServerCredentials).peerMapUpdateInterval(5).start();
      FutureRelayNAT startRelay = uNat.startRelay(peers[0].peerAddress());
      FutureRelay frNAT = startRelay.awaitUninterruptibly().futureRelay();
      Assert.assertTrue(startRelay.isSuccess());
      mockGCM(peers, uNat);

      PeerAddress relayPeer = frNAT.relays().iterator().next().relayAddress();
      Peer found = null;
      for (Peer p : peers) {
        if (p.peerAddress().equals(relayPeer)) {
          found = p;
          break;
View Full Code Here

            }
        } else { // fire and forget - if (message.getType() == Type.REQUEST_FF_1)
            // we received a fire and forget ping. This means we are reachable
            // from outside
            //responseMessage = null;
            PeerAddress serverAddress = peerBean().serverPeerAddress();
            if (message.isUdp()) {
                PeerAddress newServerAddress = serverAddress.changeFirewalledUDP(false);
                peerBean().serverPeerAddress(newServerAddress);
                synchronized (reachableListeners) {
                    for (PeerReachable listener : reachableListeners) {
                        listener.peerWellConnected(newServerAddress, message.sender(), false);
                    }
                }
                responseMessage = message;
            } else {
                PeerAddress newServerAddress = serverAddress.changeFirewalledTCP(false);
                peerBean().serverPeerAddress(newServerAddress);
                synchronized (reachableListeners) {
                    for (PeerReachable listener : reachableListeners) {
                        listener.peerWellConnected(newServerAddress, message.sender(), true);
                    }
View Full Code Here

            @Override
            public void operationComplete(final FutureChannelCreator future) throws Exception {
                if (future.isSuccess()) {
                  FutureResponse[] futures = new FutureResponse[max];
                    for (int i = 0; i < max; i++) {
                        PeerAddress randomAddress = list.remove(rnd.nextInt(list.size()));
                       
                        BroadcastBuilder broadcastBuilder = new BroadcastBuilder(peer, messageKey);
                        broadcastBuilder.dataMap(dataMap);
                        broadcastBuilder.hopCounter(hopCounter + 1);
                        broadcastBuilder.udp(isUDP);
View Full Code Here

    int active = 0;
    for (int i = 0; i < parallel; i++) {
      if (futureResponses.get(i) == null) {
        // TODO: make this more smart
        boolean primary = true;
        PeerAddress next = null;
        if (primaryTracker.incrementAndGet() <= maxPrimaryTracker) {
          if (isGet) {
            next = Utils.pollRandom(queueToAsk, rnd);
          } else {
            next = queueToAsk.pollFirst();
View Full Code Here

            final Number160 locationKey = new Number160(12345);

            NavigableSet<PeerAddress> closestPeersIndexes = findTheClosestPeer(peers, locationKey);
            Iterator<PeerAddress> iterator = closestPeersIndexes.iterator();
           
            PeerAddress Pa = iterator.next();
            PeerAddress Pb = iterator.next();
            PeerAddress Pc = iterator.next();

            PeerDHT A = find(peers, Pa);
            PeerDHT B = find(peers, Pb);
            PeerDHT C = find(peers, Pc);
           
View Full Code Here

          final ChannelServerConfiguration channelServerConfiguration,
          final ChannelClientConfiguration channelClientConfiguration,
          final ScheduledExecutorService timer, SendBehavior sendBehavior) throws IOException {
    //peer bean
    peerBean = new PeerBean(keyPair);
    PeerAddress self = findPeerAddress(peerId, channelClientConfiguration, channelServerConfiguration);
    peerBean.serverPeerAddress(self);
    LOG.info("Visible address to other peers: {}", self);
   
    //start server
    workerGroup = new NioEventLoopGroup(0, new DefaultThreadFactory(ConnectionBean.THREAD_NAME
View Full Code Here

TOP

Related Classes of net.tomp2p.peers.PeerAddress

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.