Package net.tomp2p.futures

Examples of net.tomp2p.futures.FutureResponse


                if (!future2.isSuccess()) {
                    futureSync.failed(future2);
                    LOG.error("checkDirect failed {}", future2.failedReason());
                    return;
                }
                final FutureResponse futureResponse = peerSync.syncRPC().infoMessage(other,
                        SyncBuilder.this, future2.channelCreator());
                futureResponse.addListener(new BaseFutureAdapter<FutureResponse>() {
                    @Override
                    public void operationComplete(FutureResponse future) throws Exception {
                        if (future.isFailed()) {
                            Utils.addReleaseListener(future2.channelCreator(), futureResponse);
                            futureSync.failed(future);
                            LOG.error("checkDirect failed {}", future.failedReason());
                            return;
                        }

                        Message responseMessage = future.responseMessage();
                        DataMap dataMap = responseMessage.dataMap(0);

                        if (dataMap == null) {
                          LOG.error("nothing received, something is wrong");
                            futureSync.failed("nothing received, something is wrong");
                            return;
                        }

                        Map<Number640, Data> retVal = new HashMap<Number640, Data>();
                        boolean syncMessageRequired = false;
                        int dataCopy = 0;
                        int dataOrig = 0;
                        //int dataCopyCount = 0;
                        //int diffCount = 0;
                        //int dataNotCopied = 0;
                        for (Map.Entry<Number640, Data> entry : dataMap.dataMap().entrySet()) {
                         
                          Data data = entry.getValue();
                          if(data.length() == 0) {
                            if(data.isFlag1()) {
                              LOG.debug("no sync required");
                              syncMessageRequired = false;
                            } else if(data.isFlag2()) {
                              LOG.debug("copy required for key {}",entry.getKey());
                              syncMessageRequired = true;
                              Data data2 = peer.storageLayer().get(entry.getKey());
                              dataOrig += data2.length();
                              //copy
                                    retVal.put(entry.getKey(), data2);
                                    dataCopy += data2.length();
                                   
                            }
                          } else {
                            LOG.debug("sync required");
                            syncMessageRequired = true;
                            Data data2 = peer.storageLayer().get(entry.getKey());
                            dataOrig += data2.length();
                            final ByteBuf buffer = data.buffer();
                            Number160 versionKey = SyncUtils.decodeHeader(buffer);
                            Number160 hash = SyncUtils.decodeHeader(buffer);
            
                            List<Checksum> checksums = SyncUtils.decodeChecksums(buffer);
                            // TODO: don't copy data, toBytes does a copy!
                            List<Instruction> instructions = RSync.instructions(
                                         data2.toBytes(), checksums, blockSize);
                           
                            AlternativeCompositeByteBuf abuf = AlternativeCompositeByteBuf.compBuffer();
                           
                            dataCopy += SyncUtils.encodeInstructions(instructions, versionKey, hash, abuf);
                            DataBuffer dataBuffer = new DataBuffer(abuf);
                            //diff
                            Data data1 = new Data(dataBuffer).flag1();
                                retVal.put(entry.getKey(), data1);                       
                          }
                        }
                        final SyncStat syncStat = new SyncStat(peer.peerAddress().peerId(), other.peerId(), dataCopy, dataOrig);
                        if (syncMessageRequired) {
                          SyncBuilder.this.dataMap(new DataMap(retVal));
                          FutureResponse fr = peerSync.syncRPC().syncMessage(other,
                                    SyncBuilder.this, future2.channelCreator());
                            fr.addListener(new BaseFutureAdapter<FutureResponse>() {
                                @Override
                                public void operationComplete(FutureResponse future) throws Exception {
                                    if (future.isFailed()) {
                                        futureSync.failed(future);
                                    } else {
View Full Code Here


    message.key(builder.locationKey());
    message.key(builder.domainKey());
    if (builder.getBloomFilter() != null) {
      message.bloomFilter(builder.getBloomFilter());
    }
    final FutureResponse futureResponse = new FutureResponse(message);

    addTrackerDataListener(futureResponse, new Number320(builder.locationKey(), builder.domainKey()));
    RequestHandler<FutureResponse> requestHandler = new RequestHandler<FutureResponse>(futureResponse, peerBean(),
            connectionBean(), builder);
View Full Code Here

    // TODO: make this always a bloom filter
    if (builder.knownPeers() != null && (builder.knownPeers() instanceof SimpleBloomFilter)) {
      message.bloomFilter((SimpleBloomFilter<Number160>) builder.knownPeers());
    }

    FutureResponse futureResponse = new FutureResponse(message);
    addTrackerDataListener(futureResponse, new Number320(builder.locationKey(), builder.domainKey()));

    RequestHandler<FutureResponse> requestHandler = new RequestHandler<FutureResponse>(futureResponse, peerBean(),
            connectionBean(), builder);
View Full Code Here

    }
   
    LOG.debug("Received late response from slow peer: {}", realMessage);
      // only the case when a unreachable peer makes a request to another slow, unreachable peer
      Map<Integer, FutureResponse> pendingRequests = dispatcher().getPendingRequests();
      FutureResponse pendingRequest = pendingRequests.remove(realMessage.messageId());
      if (pendingRequest != null) {
        // we waited for this response, answer it
        pendingRequest.response(realMessage);

        // send ok, not fire and forget - style
        LOG.debug("Successfully answered pending request {} with {}", pendingRequest.request(), realMessage);
        responder.response(createResponseMessage(message, Type.OK, message.recipient()));
      } else {
        // handle Relayed <--> Relayed.
        // This could be a pending message for one of the relayed peers, not for this peer
        BaseRelayForwarderRPC forwarder = forwarders.get(realMessage.recipient().peerId());
View Full Code Here

                @Override
                public void operationComplete(final FutureChannelCreator future) throws Exception {
                    if (future.isSuccess()) {
                        PutBuilder putBuilder = new PutBuilder(peer, locationKey);
                        putBuilder.dataMap(dataMap);
                        FutureResponse futureResponse = storageRPC.put(other, putBuilder,
                                future.channelCreator());
                        futureResponse.addListener(new BaseFutureAdapter<FutureResponse>() {
              @Override
              public void operationComplete(FutureResponse future)
                  throws Exception {
                if(future.isSuccess()) {
                  futureDone.done()
View Full Code Here

            FutureChannelCreator futureChannelCreator = peer1.getConnectionBean().getConnectionReservation().reserve(1);
            futureChannelCreator.awaitUninterruptibly();
            Number160 taskId = new Number160(11);
            Map<Number160, Data> dataMap = new HashMap<Number160, Data>();
            dataMap.put(new Number160(22), new Data("testme"));
            FutureResponse futureResponse = peer1.getTaskRPC().sendTask(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskId, dataMap, new MyWorker1(), null, false, false);
            Utils.addReleaseListenerAll(futureResponse, peer1.getConnectionBean().getConnectionReservation(),
                    futureChannelCreator.getChannelCreator());
            futureResponse.awaitUninterruptibly();
            Assert.assertEquals(true, futureResponse.isSuccess());
            Thread.sleep(1000);
        } finally {
            if (peer1 != null) {
                peer1.halt();
            }
View Full Code Here

            Number160 taskId1 = new Number160(11);
            Number160 taskId2 = new Number160(12);
            Number160 taskId3 = new Number160(13);
            Map<Number160, Data> dataMap = new HashMap<Number160, Data>();
            dataMap.put(new Number160(22), new Data("testme"));
            FutureResponse futureResponse1 = peer1.getTaskRPC().sendTask(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskId1, dataMap, new MyWorker2(), null, false, false);
            futureResponse1.awaitUninterruptibly();
            FutureResponse futureResponse2 = peer1.getTaskRPC().sendTask(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskId2, dataMap, new MyWorker2(), null, false, false);
            futureResponse2.awaitUninterruptibly();
            FutureResponse futureResponse3 = peer1.getTaskRPC().sendTask(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskId3, dataMap, new MyWorker2(), null, false, false);
            futureResponse3.awaitUninterruptibly();
            Assert.assertEquals(true, futureResponse1.isSuccess());
            Assert.assertEquals(true, futureResponse2.isSuccess());
            Assert.assertEquals(true, futureResponse3.isSuccess());
            Collection<Number160> taskIDs = new ArrayList<Number160>();
            taskIDs.add(taskId1);
            taskIDs.add(taskId2);
            taskIDs.add(taskId3);
            FutureResponse futureResponse4 = peer1.getTaskRPC().taskStatus(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskIDs, false);
            futureResponse4.awaitUninterruptibly();
            Assert.assertEquals(3, futureResponse4.getResponse().getDataMap().size());
            Map<Number160, Data> map = futureResponse4.getResponse().getDataMap();
            TaskStatus status1 = (TaskStatus) map.get(taskId1).getObject();
            TaskStatus status2 = (TaskStatus) map.get(taskId2).getObject();
            TaskStatus status3 = (TaskStatus) map.get(taskId3).getObject();
            Assert.assertEquals(TaskStatus.Status.STARTED, status1.getStatus());
            Assert.assertEquals(TaskStatus.Status.QUEUE, status2.getStatus());
            Assert.assertEquals(0, status2.getQueuePosition());
            Assert.assertEquals(TaskStatus.Status.QUEUE, status3.getStatus());
            Assert.assertEquals(1, status3.getQueuePosition());
            Thread.sleep(1000);
            FutureResponse futureResponse5 = peer1.getTaskRPC().taskStatus(peer1.getPeerAddress(),
                    futureChannelCreator.getChannelCreator(), taskIDs, false);
            Utils.addReleaseListenerAll(futureResponse5, peer1.getConnectionBean().getConnectionReservation(),
                    futureChannelCreator.getChannelCreator());
            futureResponse5.awaitUninterruptibly();
            Assert.assertEquals(3, futureResponse5.getResponse().getDataMap().size());
            map = futureResponse5.getResponse().getDataMap();
            status1 = (TaskStatus) map.get(taskId1).getObject();
            status2 = (TaskStatus) map.get(taskId2).getObject();
            status3 = (TaskStatus) map.get(taskId3).getObject();
            Assert.assertEquals(TaskStatus.Status.SUCCESS_RESULT_SENT, status1.getStatus());
            Assert.assertEquals(TaskStatus.Status.SUCCESS_RESULT_SENT, status2.getStatus());
View Full Code Here

                if(next == null) {
                  next = potentialHit.pollFirst();
                }
                if (next != null) {
                    active++;
                    FutureResponse futureResponse = operation.create(channelCreator, next);
                    futures.set(i, futureResponse);
                    futureDHT.addRequests(futureResponse);
                }
            } else {
                active++;
View Full Code Here

                    .start();
            PingRPC handshake = new PingRPC(sender.peerBean(), sender.connectionBean());
            FutureChannelCreator fcc = sender.connectionBean().reservation().create(0, 1);
            fcc.awaitUninterruptibly();
            cc = fcc.channelCreator();
            FutureResponse fr = handshake.pingTCP(pa, cc, new DefaultConnectionConfiguration());
            fr.awaitUninterruptibly();
            Assert.assertEquals(true, fr.isSuccess());
            Thread.sleep(WAIT);
        } finally {
            if (cc != null) {
                cc.shutdown().await();
            }
View Full Code Here

                    .start();
            PingRPC handshake = new PingRPC(sender.peerBean(), sender.connectionBean());
            FutureChannelCreator fcc = sender.connectionBean().reservation().create(0, 1);
            fcc.awaitUninterruptibly();
            cc = fcc.channelCreator();
            FutureResponse fr = handshake.pingTCPDiscover(pa, cc, new DefaultConnectionConfiguration());
            fr.awaitUninterruptibly();
            Assert.assertEquals(true, fr.isSuccess());
            Thread.sleep(WAIT);
        } finally {
            if (cc != null) {
                cc.shutdown().await();
            }
View Full Code Here

TOP

Related Classes of net.tomp2p.futures.FutureResponse

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.